OpenId Connect,OAuth2上构建了一个身份层,是一个基于OAuth2协议的身份认证标准协议
什么情况下会返回openid。
看IdTokenGranter#shouldSedIdToken;{
1. request grant types是oauth2协议标准的四种方式之一
2. client scope需要包含openid
3. request scope中需要包含openid,用户请求了,才返回
}
IdTokenCreator展现了id token的构建细节。
ID Token Content
- user_id:users表的id字段
- aud:这里注意,跟access token里aud的计算方法不同,这里的值就是clientid;
- iss:oauth token url
- exp:此处的计算方法跟AccessToken是使用的同一个逻辑,跟refresh token不同
- iat:now
- auth_time:AccessToken 的auth是同一个值
- amr
- acr
- azp:Authorized party,当前clientid
- given_name:users表的given_name 字段
- family_name:users表的family_name字段
- previous_login_time:users表的previous_login_time 字段
- phone_number:users表的phoneNumber字段,需要scope有profile scope;
- user_attributes和roles,看代码这两个值本意是取userinfo表的info字段的json对象的user_attributes和roles属性,但是没取到,不知道是bug还是本意就是如此;
- email_verified:users表的email_verified字段
- nonce:Number once,
- email :users表的email字段
- cid:clientid
- grant_type:用户请求的grant_type;
- zid:zone id
- origin :user表的origin字段
- jti
- reg_sig:根据users取出的UaaUser对象和client密钥对临时生成的。