OIDC-Open ID Connect


OpenID Connect的簡稱,OIDC=(Identity, Authentication) + OAuth 2.0。它在OAuth2上構建了一個身份層,是一個基於OAuth2協議的身份認證標准協議。我們都知道OAuth2是一個授權協議,

EU:End User:一個人類用戶。
RP:Relying Party ,用來代指OAuth2中的受信任的客戶端,身份認證和授權信息的消費方;
OP:OpenID Provider,有能力提供EU認證的服務(比如OAuth2中的授權服務),用來為RP提供EU的身份認證信息;
ID Token:JWT格式的數據,包含EU身份認證的信息。
UserInfo Endpoint:用戶信息接口(受OAuth2保護),當RP使用Access Token訪問時,返回授權用戶的信息,此接口必須使用HTTPS。

 

RP發送一個認證請求給OP;
OP對EU進行身份認證,然后提供授權;
OP把ID Token和Access Token(需要的話)返回給RP;
RP使用Access Token發送一個請求UserInfo EndPoint;
UserInfo EndPoint返回EU的Claims。


IDToken 授權服務器提供的包含用戶信息(由一組Cliams構成以及其他輔助的Cliams)的JWT格式的數據結構


iss = Issuer Identifier:必須。提供認證信息者的唯一標識。一般是一個https的url(不包含querystring和fragment部分)。
sub = Subject Identifier:必須。iss提供的EU的標識,在iss范圍內唯一。它會被RP用來標識唯一的用戶。最長為255個ASCII個字符。
aud = Audience(s):必須。標識ID Token的受眾。必須包含OAuth2的client_id
exp = Expiration time:必須。過期時間,超過此時間的ID Token會作廢不再被驗證通過。
iat = Issued At Time:必須。JWT的構建的時間。
auth_time = AuthenticationTime:EU完成認證的時間。如果RP發送AuthN請求的時候攜帶max_age的參數,則此Claim是必須的。
nonce:RP發送請求的時候提供的隨機字符串,用來減緩重放攻擊,也可以來關聯ID Token和RP本身的Session信息。
acr = Authentication Context Class Reference:可選。表示一個認證上下文引用值,可以用來標識認證上下文類。
amr = Authentication Methods References:可選。表示一組認證方法。
azp = Authorized party:可選。結合aud使用。只有在被認證的一方和受眾(aud)不一致時才使用此值,一般情況下很少使用。

兼容眾多的已有的IDP(身份提供商),比如基於SAML的、基於WS-Federation的等等已有的身份認證系統,都可以作為OIDC的OP存在。總結一下OIDC有那些特性和好處吧:
OIDC使得身份認證可以作為一個服務存在。
OIDC可以很方便的實現SSO(跨頂級域)。
OIDC兼容OAuth2,可以使用Access Token控制受保護的API資源。
OIDC可以兼容眾多的IDP作為OIDC的OP來使用。
OIDC的一些敏感接口均強制要求TLS,除此之外,得益於JWT,JWS,JWE家族的安全機制,使得一些敏感信息可以進行數字簽名、加密和驗證,進一步確保整個認證過程中的安全保障。


免責聲明!

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



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