请求路径:
http://127.0.0.1:8080/oauth/token?grant_type=openId&client_id=rgfMqhmW25rxtT7k&client_secret=df447dd42d2dd322fc308f6ee55c2e3c0f6ed5ca&name=徐国兴&mobile=17540558408&certno=320219195204083011
探究
步骤
- 1.authenticate
- 2.通过client_id 获取表中的client详细信息
- 3.将查回来的client信息以用户名为client_id 密码为密钥的形式放入User对象中
- 4.校验密钥传过来的和数据库中的是否匹配
- 5.开始执行 createSuccessAuthentication(principalToReturn, authentication, user);
- 6.开始交给认证提供者 进行认证
- 7.拦截
- 8.BasicAuthenticationFilter拦截Header有没有Authorization没有直接放行
- 9.到了我们自定义的jwt拦截器(该拦截器的位置是UsernamePasswordAuthFilter 前边)
- 10.到了我们的/oauth/token
- 11.调用postAccessToken
- 12.创建tokenRequest
- 13.开始生成token
- 14.grant方法
- 15.delegate.grant()方法(遍历每一种支持的方式,如果不是我们传的方式就会直接返回null)
- 16.我们自定义的类继承了 AbstractTokenGranter实现了里边的getOAuth2Authentication方法
- 开始调用上上图的认证
- 我们自己定义的UserDetailsService中的loadUserByUsername方法
- 生成jwt