OAuth2,0三方登录详解
2021-09-30 09:24:11 1 举报
登录查看完整内容
OAuth2,0三方登录详解
作者其他创作
大纲/内容
进入绑定登录页面,输入业务系统的用户名密码,获取到业务返回的UID进行绑定
grant_type参数为refresh_token表示要求更新令牌,client_id参数和client_secret参数用于确认身份,refresh_token参数就是用于更新令牌的令牌
用户点击其他业务系统的链接
业务系统
在后台处理管理系统和各业务系统的用户关联
业务系统2Eurekaclinet
管理系统有自己的用户名和密码
解析token获取相应角色及权限跳转首页
登录成功后
后端解析出授权码Code
Eureka服务注册中心RestTemple服务间互相调用,token也不需要传递了
登录
登录成功获取到cuid
带着token、业务系统的应用名称进入Filter解析
新的登录接口
这样不影响原有业务自己的Token解析
无
{ \"access_token\":\"ACCESS_TOKEN\
加入Eureka注册中心后
发送请求https://业务系统的地址/login/oauth/authorize? client_id=7e015d8ce32370079895&redirect_uri=http://管理系统地址:8080/oauth/redirect
查找关联表,是否有关联业务的用户id
授权码(code参数)
管理系统 == 统一认证系统
业务系统的url:Login in 业务系统
业务系统1
将uid、系统名称加上Token返回给管理系统
用户
注册中心EureKaSever
有
UID加上系统名称相结合达到唯一性
登录成功生成Token,携带着管理系统的Cuid,相关联的业务系统用户Uid,及业务系统名称
解析Token中是否有要进入业务系统的UID和系统名称
client_id参数和client_secret参数用来让 B 确认 A 的身份(client_secret参数是保密的,因此只能在后端发请求),grant_type参数的值是AUTHORIZATION_CODE,表示采用的授权方式是授权码,code参数是上一步拿到的授权码,redirect_uri参数是令牌颁发后的回调网址。
有,将Uid传递给登录接口
向redirect_uri指定的网址,发送一段 JSON 数据
Filter处理解析Token的业务
会自动收集各服务的状态根据application.name可自动获取路径各系统可以通过RestTemplate相互调用
业务系统1Eurekaclinet
https://业务系统url/oauth/token? grant_type=refresh_token& client_id=CLIENT_ID& client_secret=CLIENT_SECRET& refresh_token=REFRESH_TOKEN
生成一个client_secret,然后向业务系统申请令牌
mysql
携带Token可访问业务系统
管理系统
获取到本业务系统用户id,在后台走原有业务的登录操作,生成本系统自己的Token
规定各业务系统的应用名称,
OAuth2.0 三方登录
重新生成Token(这次的Token里会有绑定后的业务系统用户id)
说明第一次进入本业务,需要输入用户名密码
进入登录成功的业务页面
http://管理系统地址:8080/oauth/redirect? code=859310e7cecc9196f4af
更新令牌
管理系统Eurekaclinet
返回token
增加与各业务系统用户的关联表
要求业务系统用户登录,确保是本人在操作
RestTemplate调用业务系统的登录接口
登录接口获取到uid走原登录流程
无,将Token传递过去
返回uid
解析获取到Token令牌,将其存储到redis中
登录后,询问用户,该应用正在请求数据,你是否同意授权
带有两个参数:client_id告诉 GitHub 谁在请求,redirect_uri是稍后跳转回来的网址
https://业务系统的地址/oauth/token? client_id=CLIENT_ID& client_secret=CLIENT_SECRET& grant_type=authorization_code& code=AUTHORIZATION_CODE& redirect_uri=CALLBACK_URL
地址是https://业务服务器url/user,请求的时候必须在 HTTP 头信息里面带上令牌Authorization: token 361507da
业务系统解析参数生成Token
0 条评论
回复 删除
下一页