OpenID Connect(简称 OIDC)1.0 是建立在 OAuth 2.0 上的身份验证机制,它允许客户端通过授权服务对用户进行认证,以及获取用户信息。其意义主要在于以安全的方式分发用户的唯一标识(访问凭证依然是 Access Token)。
+--------+ +--------+
| | | |
| |---------(1) AuthN Request-------->| |
| | | |
| | +--------+ | |
| | | | | |
| | | End- |<--(2) AuthN & AuthZ-->| |
| | | User | | |
| RP | | | | OP |
| | +--------+ | |
| | | |
| |<--------(3) AuthN Response--------| |
| | | |
| |---------(4) UserInfo Request----->| |
| | | |
| |<--------(5) UserInfo Response-----| |
| | | |
+--------+ +--------+
OP 对客户端进行鉴权,然后将鉴权结果返回给 RP。鉴权流程有三种方式:授权码模式、隐藏模式、混合模式。OP 采用何种模式取决于 RP 请求时传递的 response_type
参数。
授权码模式的流程与 OAuth 2.0 类似,不同之处是:在 Token Endpoint 的响应中增加 ID Token,它用于指定用户 ID,以便在访问用户信息时作为标识。
具体细节请参考:OpenID Connect Specs。
RP 能够获得的用户信息取决于:
scope
claims
参数