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 Content1. user_id:users表的id字段
2. aud:这里注意,跟access token里aud的计算方法不同,这里的值就是clientid;
3. iss:oauth token url
4. exp:此处的计算方法跟AccessToken是使用的同一个逻辑,跟refresh token不同
5. iat:now
6. auth_time:AccessToken 的auth是同一个值
7. amr
8. acr
9. azp:Authorized party,当前clientid
10. given_name:users表的given_name 字段
11. family_name:users表的family_name字段
12. previous_login_time:users表的previous_login_time 字段
13. phone_number:users表的phoneNumber字段,需要scope有profile scope;
14. user_attributes和roles,看代码这两个值本意是取userinfo表的info字段的json对象的user_attributes和roles属性,但是没取到,不知道是bug还是本意就是如此;
15. email_verified:users表的email_verified字段
16. nonce:Number once,
17. email :users表的email字段
18. cid:clientid
19. grant_type:用户请求的grant_type;
20. zid:zone id
21. origin :user表的origin字段
22. jti
23. reg_sig:根据users取出的UaaUser对象和client密钥对临时生成的。