认证和授权

目录

1.认证和授权?

2.Cookie和Session?

3.Token?

4.SSO与OAuth2.0的区别

5.SpringSecurity

6.ApacheShiro


1.认证和授权?

          用户身份(Authentication)和用户权限 (Authorization)的区别。

2.Cookie和Session?

          都是用来跟踪浏览器用户身份的会话方式。Cookie在客户端保存用户信息,会话cookie自动过期setMaxAge设置会话数据存在时间,大小数量和安全问题20个4k以内。Session默认30分钟有效,setMaxInactiveInterval设置或者部署描述符配置有效期。

  • Cookie保存已经登录用户信息,下次访问可自动登录基本信息。(用户个性化设置,主题)......
  • Cookie保存 session或者 token,后端取到就能记录用户当前的状态,因为HTTP协议是无状态的。
  • Cookie记录和分析用户浏览过程。因为HTTP无状态协议,所以将这些信息存放在 Cookie,看你浏览了啥(商品推荐)。

通过SessionId实现特定用户登录,一般存放在Redis中。用户登录系统后服务器生产并返回给客户端带有sessionid的cookies,然后用户在此向服务器发起请求的时候就会带着这个Cookies(sessionId),这样后端就知道身份了。

https://www.baeldung.com/spring-session  (springboot的demo跨程序管理)

3.Token?

      CSRF跨站请求伪造。就是别人通过cookie拿到你的sessionid就可以代替你的身份访问资源。

典型CSRF攻击流程:

  • 受害者登录a.com,并保留了登录凭证(Cookie)。
  • 攻击者引诱受害者访问了b.com。
  • b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会默认携带a.com的Cookie。
  • a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求。
  • a.com以受害者的名义执行了act=xx。
  • 攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让a.com执行了自己定义的操作。

那么,有没有不用存放session就能认证用户身份呢?Token上场表演。对数据使用算法+密钥进行签名,成为无法伪造的Token。

基于Token的身份验证JWT:

  1. Header:JWT的元数据。定义了生成签名的算法以及Token的类型。
  2. Payload:负载、用来存放实际需要传递的数据。
  3. Signature:服务器通过Payload/Header和一个密钥(secret)使用Header 中签名算法(默认是HMACSHA256)生成。

4.SSO与OAuth2.0的区别

        OAuth2标准授权协议,用来授权第三方应用获取某些权限。SSO(Single Sign On)单点登录 ,解决多个相关的子系统登录一个别的也可以访问。

5.SpringSecurity

       

  • 提供了可用的安全框架,提供了很多用户认证功能提高开发效率。基于Spring易于集成,有很多封装方法。
  • 配置文件较多,RBAC不太明显。对系统中role、user和permission无可操作界面。大数据量下几乎不可以用。

6.ApacheShiro

        认证、授权、会话管理和加密。四大基石!

subject :主体 -------SecurityManager:管家------------Realm:安全数据源

  • 灵活可用容易集成。自己实现RBAC和操作界面。简单明了!
发布了76 篇原创文章 · 获赞 113 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/m0_37676429/article/details/105338666