IdentityServer4受權模式應用場景

OpenID 和 OAuth 的區別

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

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

IdentityServer4

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

客戶端模式(Client Credentials)

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

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,相對於簡化模式會更安全一點。ide

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

Authorization code flow

混合模式(Hybrid flow)

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

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

參考

相關文章
相關標籤/搜索