Security--14(Spring Security Oauth初体验)

目录

 

1.为什么要开发基于App认证的模块?

2.Spring Security Oauth

3.实现标准的Oauth服务提供商

4.获取授权码

5.获取accessToken

6.实现资源服务器


1.为什么要开发基于App认证的模块?

   之前的认证方式,认证成功后,认证信息都是存在服务器的Session里面的,浏览器的每次请求服务器都会去浏览器的cookie里面检查JSESSIONID是否存在,如果不存在,就会在服务器上去新建一个SESSION,新建的SESSIONID就会存到Cookie里面,这样用户每次发请求的时候都会通过JESSIONID找到相应的SESSION,这是目前基于服务器SESSION保存用户登录信息的一种方式。

但是当前后端分离过后,前端的资源html就不再和应用服务放在一台服务器上了,而是单独放在一台服务器上面,这样用户的请求都是发往Web Server,再由Web Server将请求发往后端。

用户不再通过浏览器直接访问后端的应用,而是通过其他的应用访问后端的应用。如果还想要之前的那种方式 cookie session来保存用户的信息,就会出现问题,比如开发繁琐,安全性和客户体验差,认证都是服务器自己做的,只有cookie里面有sessionId.那么服务器就会认为你已经登录了。如果别人知道了sessionID,那就不安全了。还有就是有些小程序的前端不支持cookie。

由于存在以上的问题,当我们请求不再是来自浏览器,而是一些应用的时候,我们应该用另外的方式来处理,这种方式就是令牌。

这样后端服务器也不必再把用户的认证信息放到session里面,而是通过令牌来验。也就是说应用服务器的授权不再是基于Sesion了,而是基于令牌。基于服务器SESSION来认证的话。这个SESSION都是由服务器自动完成的,后端没有办法干预。而基于token的这种形式,TOKEN怎么生成 包含什么信息,怎么校验都是可以控制的。比如之前说的安全性问题,这里可以将token的超时时间设置小一点,token 失效后可以通过token刷新的机制来保证用户不会重新登陆,走完oauth流程以后会给你一个refresh_token,而基于SESSION的,一旦session失效,就会让用户重新登陆。

那么Spring Social 和Spring Security Oauth之间有什么区别呢?

Spring Social 封装了第三方应用Client他所要做的大部分事情,去连任意一个我想连的服务提供商,而Spring Securiy Oauth则是封装了服务提供商所要完成的大部分行为,使用它就可以完成的搭建一个服务提供商,往外发令牌,验令牌。

2.Spring Security Oauth

 先要利用Spring Security Oauth实现服务提供商,需要封装两个内容,一个是认证服务器,一个资源服务器,在认证服务器中就有四种授权码模式,这几种授权的模式Spring Security Oauth都替我们实现好了,通过四种的授权模式我们知道了用户权限和他的身份之后就要生成token去存储,而token的生成和存储在oauth协议中并没有按照一个明确的规则去说明,但是Spring Security Oauth也做了一个标准的实现。

接着就是资源服务器,资源服务器是需要受到保护的,那么之前我们是如何做保护的呢?靠的是Spring Security 的过滤器链,那么在Sping Security Oauth中其实就是在这个过滤器链上又加了一个Oauth2AuthenticationProcessingFilter过滤器来实现的。

这个过滤器的作用就是从请求中拿出你发出去的token,根据配置的存储策略去存储里找到用户信息,根据用户信息来判断是否有权限等等。是否能访问资源等等。

还有一个问题就是,当我们用第三方登录,或者使用短信验证码来登录的时候,是不需要使用4种模式来生成Token的,那么需要自定义的认证模式,让短信登录,三方登录也能发生成token存储啊之类的。

 

3.实现标准的Oauth服务提供商

   oauth协议的说明地址:https://tools.ietf.org/html/rfc6749

    之前说过Spring Security Oauth已经实现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时空恋旅人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值