oauthserver基本流程

概要

oauth server 认证流程

整体架构流程

认证流程:
redirectUrl如果为baidu.com
(1) qq认证服务器已经有个表sys_oauth_client_details 里面有clientId、clientSecret、directUrl等
(2) 登录百度(三方)的时候如果调用qq认证会先出一个qq扫码登录之后,要先注册baidu账号密码(注册完毕为登录状态)并且绑定,绑定的时候就会先调用/oauth2/oahtrize跳转到微信登录(此时为资源的登录微信账号登录之后能去到当前的微信用户信息)
(3)发送 (oauth2/code)https://graph.qq.com/oauth2.0/show?which=Login&display=pc&client_id=100312028&response_type=code&redirect_uri=https%3A%2F%2Fpassport.baidu.com%2Fphoenix%2Faccount%2Fafterauth%3Fmkey%3D96abb8e56d9842db992eac72a7212c53225b49540c88443b3e%26tpl%3Dmn&state=1682562306&display=page&scope=get_user_info%2Cadd_share%2Cget_other_info%2Cget_fanslist%2Cget_idollist%2Cadd_idol%2Cget_simple_userinfo&traceid=
(3)然后拿着这个code从服务器调用(不通过浏览器)调用(/oauth2/token需要输入clientId和clientSecret)浏览器看不到,然后qq认证服务器返回accesstoken(和微信用户信息绑定)
(4)此时baidu拿着这个accesstoken就可以访问微信的服务了,可以通过发送当前的用户id存储到微信的数据库里,unionId(微信用户的唯一标识)和openid(微信用户的对应baidu下的唯一标识,第一次绑定需要生成)和当前id在同一行(此时完成了真正的绑定),openid返回给baidu之后baidu拿着这个openid存到baidu数据库里(其实也可以不存openid但是为了解绑用,解绑也要发送到微信资源端)
(5) 以后每次访问都会先登录微信获取微信的openId即获取到了openid对应的baidu账号信息获取到baidu账号信息
(6) 获取到账号信息之后baidu就可以自己把自己的账号信息通过token存储起来,每次调用就是访问自己的信息与微信无关了就

技术细节

1 oauth2停止更新,使用oauthserver
2 弃用endpoind 中的/oauth/authorize,/oauth/token
使用认证服务器的@Order(Ordered.HIGHEST_PRECEDENCE)最先执行
authorizationServerSecurityFilterChain.authorizationServerSettings(AuthorizationServerSettings.builder())中的/oauth2/authorize,/oauth/token
登录也在这个securityFilterChain里
端点授权(就是登录之后弹出的那个授权也在这个里面)
resourceServerSecurityFilteChain 不需要添加登录逻辑只要执行permitAll()相关逻辑(@EnableWebSecurity需要添加)
3 需要添加不涉及oauth的登录逻辑:即本身要自带登录逻辑(@EnableWebSecurity需要添加)

小结

oauth2基本流程主要是执行/oauth2/authorize和/oauth/token其中后者是不可见的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值