springSecurity+oauth2认证记录(仅记录)

1 整体大致流程。

  ★★★★★端口8888为资源(认证服务器),端口8081为客户端。需要授权8081可以获取8888端口信息,通过授权码模式获取token进行获取。简而言之也是通过JWT(由头部,载荷,签名生成的取代session的跨域工具)实现单点登录。8081进入8888进行具体授权流程,8888返回code值到8081,在8081进行处理,通过code换取8888的JWT(即token信息)。8081拿到8888的token信息后可以携带token和scope(授权域)去获取认证服务器(8888)内资源。★★★★★

 

2 源码解读

 认证过程

首先由客户端向服务端(授权服务器)获取code(直接由前端发送href请求即可),链接模版如下

host:8888/oauth/authorize?client_id=此客户端的唯一标识(存取在授权服务器数据库中)&scope=授权域(授权域和授权服务器内授权域匹配上才会返回code并在接下流程中返回的token内将相应scopo加密)&response_type=(返回授权类型,code等)&redirect_uri=http://localhost:8081/sss/sss/redirect(授权服务器生成code后重定向的url)。

其中部分源码解读如下图

★★★★★登录成功后,进入自定义的登录成功处理器★★★★★源码如下

此时重定向到获取code链接即:

host:8888/oauth/authorize?client_id=此客户端的唯一标识(存取在授权服务器数据库中)&scope=授权域(授权域和授权服务器内授权域匹配上才会返回code并在接下流程中返回的token内将相应scopo加密)&response_type=(返回授权类型,code等)&redirect_uri=http://localhost:8081/sss/sss/redirect(授权服务器生成code后重定向的url)。

源码如下:

默认从内存中加载!!!!!到这一路往下走就行。知道返回code到之前我们给的URL。此时我们可以自定义授权页面。接口是配合thymeleaf,自定义页面。我们写的接口和框架接口有重复会自动覆盖。!!!!

其次,客户端携带code去换取token。

 

问题!!!!

前后端分离情况下,由于前端并未发起请求,整体授权流程后台操作。生成的token前端获取不到!!!

解决!!!

将授权的回调url不写入security的放行路径。此时生成code认证服务器返回到客户端被拦截到前端。前端拿到code进行ajax请求,返回授权token。将此token存储到localstorage,请求后端时加入header即可。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值