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 能够获得的用户信息取决于:
scopeclaims 参数