接着上文.Net 5.0 通过IdentityServer4实现单点登录之id4部分源码解析,id4服务端通过配置参数和客户端传递得参数生成了一个自动提交表单的html页面,并携带以下参数code、scope...的form表单中提取表单参数code、scope、state、session_state值,写入OpenIdConnectMessage实例值
2、解密客户端自身传递的state值,解析出AuthenticationProperties...服务的connect/token节点的执行流程
1、校验客户端的合法性
2、校验授权码的有效性,并根据code去IPersistedGrantStore查找真正的授权码实例 是否过期等等
3、校验codeChallengeMethod...中写入一个加密的state只有客户端能解,state里面存了code_verifier,接着客户端去id4拿令牌前,会解密state,拿到code_verifier,传给id4,在通过code_challenge_method...加密和之前存储的进行比较.
demo中code应为是mvc客户端,属于机密客户端,所以code是post传输,相对安全.
4、判断当前用户是否处于活跃状态
5、最后生成idtoken和access_token