浅谈web授权常用策略随机

常用的授权框架和协议随记

目前我所了解的有Spring shrio、Sping security 、JWT、Oauthor.

目前我接触到有Spring shrio 、 JWT、Oauthor.

先随记Spring shrio

Spring shrio :主要有三个重用的对象,一个Subject ,其英文的意思有主题,题材,科目,表现对象的意思。但在Spring shrio中,其表示用户的意思。该对象的获取方式如下:

Subject subject = SecurityUtils.getSubject();

其次就是,SecurityManager:该对象是用来web的安全管理容易,他继承了三个接口,Authenticator, Authorizer, SessionManager.这三个接口分别对应了如下的方法功能。Authenticator对应了用户名和密码的认证,其次,Authorizer对应了用户的权限的认真,最后SessionManager对应了会话的管理。

SecurityManager对应的获取,通过强引用的方式产生,如下所示:
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
其次在配置Spring shrio 的时候,如果不想用securityManager自带的session管理,可以将其关闭。 其次,可以将我们创建的realm域放入到容器管理中。因为realm就对应了dao层。
其次在Spring shrio中还有一个filter概念。其次,我们的spring shrio的业务流程就是在filter类中进行规范的,首先我们可以在filter中扑获一些请求信息,例如,url,请求方法,以及token. 接下来就是进行subject.login ,其次就是进行用户的权限认真,可以使用chain.doFilter(servletRequest,servletResponse); 最后就是进行suject的退出,在finally写。

Spring shrio使用中,涵盖了token的使用,token可以存在redis中,使得服务端有状态,token可以对应用户信息,客户端每次请求的过程中都携带token,我们可以根据token获取到用户信息,这个用户信息也可以携带用户的角色,这样就不用每次都去查数据库的角色信息。

针对JWT的使用

jwt是json web token的缩写。jwt使得服务器木有状态值,这样就能满足分布式的会话存储。例如单点登入,以前单点登入,一种解决方案是持久化session数据,写入数据库或文件持久层等。收到请求后,验证服务从持久层请求数据。该解决方案的优点在于架构清晰,而缺点是架构修改比较费劲,整个服务的验证逻辑层都需要重写,工作量相对较大。而且由于依赖于持久层的数据库或者问题系统,会有单点风险,如果持久层失败,整个认证体系都会挂掉。

jwt的作用就是避免将会话的状态存储在服务器上。而是将用户信息存储在客户端,存储在客户端的cookie中。jwt的主要组成部门有三个部分,JWT头部,JWT的有效载体,签名。签名的作用就是为了数据不被篡改。JWT的有效载体就是用来承载用户的信息,JWT头部就是用来表示,信息加密使用了那种算法。当客户端每次请求都携带JWT给服务器,服务器就不要进行认证,可以直接拿到JWT中的用户信息。进行后续的操作。

针对Oauthor的使用。

Oauthor的出现主要在两个服务之间的功能的使用,也就是一方的服务(A)需要用到另一方服务(B)的用户信息,例如豆瓣服务器,你在浏览豆瓣的网页时,去需要注册登入后才能使用其功能,但是这个时候你又不想注册,感觉很麻烦,这个时候豆瓣出了一个好主意,就是在注册页面加了一个QQ登入的标签,你点击登入这个QQ登入的标签,实质上豆瓣会反馈给你一个QQ登入的界面,界面中还有授权的字样,等你填好的用户名和密码之后,点击授权,这个时豆瓣服务器会向服务器发送用户名和密码。QQ服务器进行验证通过后,会携带一个授权码给豆瓣服务器,豆瓣服务器后续会做联系的两个操作,拿就是拿这个授权把再次向QQ服务器请求token,QQ服务器返回token后,豆瓣服务器最后请求带上该token获取用户信息。最后就可以使用豆瓣了。

针对Spring security目前自己还没有接触。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值