IdentityServer4 - V4 概念理解及認證授權過程

Sol·wang發表於2022-12-27

概念理解

 

Scope

範圍,它的定義比較寬泛,可大可小。
大到可把多個包含相同Scope的站點或服務形成一個虛擬的組,也可以是站點或服務的子級;小到身份所需要包含的資訊,以精確出哪種身份。

 

Client

使用者將要使用的客戶端;如:PC端、移動端、小程式、商家app、購物app、管理員app等
客戶端包含了標識、授權方式、金鑰、指定的範圍等資訊。

客戶端請求樣例:
IdentityServer4 - V4 概念理解及認證授權過程
[統一認證授權服務]中存放了多種Client,請求[統一認證授權服務]時附帶的參數列明是哪個Client的請求,[統一認證授權服務]驗證是否存在的Client。

 

Client.Scope

客戶端指定的支援範圍(能匹配到的服務 + 可取得的身份資訊)
認證授權後的Token = 可訪問的服務 + 已認證的使用者資訊。 

 

Claim

使用者資訊屬性,描述身份資訊的元素;
如:姓名的Claim物件、手機的Claim物件,部門角色等的眾多物件 存於 IssuedClaims 中。

 

ApiResource

資源的定義,可認為是一個站點或一個後臺服務等,也就是可被授權訪問的服務,如:產品服務、訂單服務

 

ApiResource.Scope

Client透過引數Scope可關聯到的ApiResource

 

ApiResource.UserClaims

訪問服務時,Token中要求必須有的使用者資訊(服務的個性化要求)

 

IdentityResource

認證後的身份資訊,主要定義關於身份的描述,身份中的Claim包含了比較完整的使用者(身份)資訊,資料取自於 IssuedClaims,於Token中附帶;如:OpenID、profile(姓名、性別、賬號、電話等)、email、地址等,可按情況自定義追加

 

執行前提

  • Client 客戶端的資料來源
  • IdentityResource 身份結構的定義
  • ApiResource 的資料來源
  • Scope 的資料來源
  • UserClaims 使用者資訊資料來源

 

執行過程

1、請求認證授權的主要引數:客戶端標識、使用者憑證、授權方式、金鑰Secret、範圍Scope

2、驗證客戶端是否存在

3、驗證Scope關聯到的身份是否存在

4、驗證Scope關聯到的ApiResource是否存在

5、驗證Scope是否已定義

6、驗證賬戶資訊

7、賬戶資訊透過Claim組合成Principal成為Identity合法身份

8、透過Scope引數,關聯到的ApiResource + 關聯到已認證的身份資訊 => 生成Token

符合Scope引數的ApiResource,符合Scope引數的身份,

此Token就可以訪問一個或多個服務(範圍)及附帶的使用者資訊。

 

請求引數Scope關聯到的ApiResource + 請求引數Scope關聯到的Claim => 生成 Token

相當於:要授權的ApiResource + 認證後的Claim資訊 => 生成Token

也相當於:Token => 可訪問的ApiResource服務 + 取已認證的使用者身份資訊

 

授權認證過程示例圖

IdentityServer4 - V4 概念理解及認證授權過程

 

相關文章