IdentityServer4授權模式應用場景


OpenID 和 OAuth 的區別

  • OpenID:Authentication,即認證,用戶是誰?
  • OAuth:Authorization,即授權,用戶能做哪些操作?
  • OpenID Connect(OIDC):基於OAuth協議,是“認證”和“授權”的結合。

    OAuth2提供了Access Token來解決授權第三方客戶端訪問受保護資源的問題。 OIDC在這個基礎上提供了ID Token來解決第三方客戶端標識用戶身份認證的問題。。

IdentityServer4

IdentityServer4 是 ASP.NET Core的一個包含OpenID Connect和OAuth 2.0協議的框架,提供了單點登錄,集中控制,API訪問控制等功能。

客戶端模式(Client Credentials)

適用於和用戶無關,機器與機器之間直接交互訪問資源的場景。

POST https://api.oauth2server.com/token
    grant_type=client_credentials&
    client_id=CLIENT_ID&
    client_secret=CLIENT_SECRET

密碼模式(resource owner password credentials)

適用於當前的APP是專門為服務端設計的情況。

POST https://api.oauth2server.com/token
  grant_type=password&
  username=USERNAME&
  password=PASSWORD&
  client_id=CLIENT_ID

簡化模式(implicit flow)

適用於瀏覽器WEB應用,支持

  • 用戶認證(JavaScript 應用或傳統服務端渲染的Web應用)
  • 用戶認證+授權(JavaScript應用)

簡化模式下ID Token和Access Token都是通過瀏覽器的前端通道傳遞的。

所以如果是傳統服務端Web應用並且僅是在服務端使用Access Token的話,推薦使用Hybrid Flow。
OpenID Implicit flow

授權碼模式(Authorization code flow)

授權碼模式通過后台傳輸Tokens,相對於簡化模式會更安全一點。

但每當考慮使用授權碼模式的時候,請使用混合模式。混合模式會首先返回一個可驗證的ID Token並且有更多其他特性。

Authorization code flow

混合模式(Hybrid flow)

適用於服務器端 Web 應用程序和原生桌面/移動應用程序。

混合模式是簡化模式和授權碼模式的組合。混合模式下ID Token通過瀏覽器的前端通道傳遞,而Access Token和Refresh Token通過后端通道取得。

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM