在 token 創建、校驗的整個生命周期中,都涉及到了 Scheme、Claim、ClaimsIdentity、ClaimsPrincipal 這些概念,如果你之前有使用過微軟的 Identity 權限驗證,對於這幾個名詞就會比較熟悉,可能某些小伙伴之前並沒有使用過 Identity,我來簡單介紹下這幾個名詞的含義。
Scheme 模式,這個與其余的名詞相對獨立,它主要是指明我們是以什么授權方式進行授權的。例如,你是以 cookie 的方式授權或是以 OpenId 的方式授權,或是像這里我們使用 Jwt Bearer 的方式進行授權。
Claim 聲明,以我們的現實生活為例,我們每個人都會有身份證,上面會包含我們的姓名、性別、民族、出生日期、家庭住址、身份證號,每一項數據的都可以看成是 type-value(數據類型-數據值),例如,姓名:張三。身份證上的每一項的信息就是我們的 Claim 聲明,姓名:張三,是一個 Claim;性別:男,也是一個 Claim。而對於 ClaimsIdentity,就像這一項項的信息最終組成了我們的身份證,這一項項的 Claim 最終組成了我們的 ClaimsIdentity。而 ClaimsPrincipal 則是 ClaimsIdentity 的持有者,就像我們擁有身份證一樣。
從上面的文字可以總結出,Claim(每一項的證件信息)=》ClaimsIdentity(證件)=》ClaimsPrincipal(證件持有者)。其中,一個 ClaimsIdentity 可以包含多個的 Claim,而一個 ClaimsPrincipal 可以包含多個的 ClaimsIdentity。