ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Shiro框架

2020-12-22 17:33:15  阅读:221  来源: 互联网

标签:加密 框架 用户 盐值 Shiro 权限 shiro


Apache Shiro是Java的一个安全(权限)框架。

shiro可以完成:认证、授权、加密、会话管理、缓存与Web集成等。

shiro有十个功能:

  • Authentication(昂低k顺):身份认证/登录,验证用户是不是拥有相应的身份,密码匹配由shiro来完成;
  • Authorization(昂低rei顺):授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;
  • Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;
  • Cryptography(库托哥非):加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;
  • Web Support:Web支持,可以非常容易的集成到Web环境;
  • Caching(卡寻):缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;
  • Concurrency(困权而si):shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;
  • Testing:提供测试支持;
  • Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
  • Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。

shiro运行流程:

在这里插入图片描述

  1. Subject (啥绝):当前用户的操作
  2. SecurityManager:用于管理所有的Subject
  3. Realms(玩死):用于进行权限信息的验证

其他组件:

Authentication 和 Authorization

在shiro的用户权限认证过程中其通过两个方法来实现:

  1. Authentication:是验证用户身份的过程。
  2. Authorization:是授权访问控制,用于对用户进行的操作进行人证授权,证明该用户是否允许进行当前操作,如访问某个链接,某个资源文件等。

除了以上几个组件外,Shiro还有几个其他组件:

  1. SessionManager :Shiro为任何应用提供了一个会话编程范式。
  2. CacheManager :对Shiro的其他组件提供缓存支持。

Shiro工作流程
也就是说对于我们而言,最简单的一个Shiro应用:

  1. 应用代码通过Subject来进行认证和授权,而Subject又委托给SecurityManager;
  2. 我们需要给Shiro的SecurityManager注入Realm,从而让SecurityManager能得到合法的用户及其权限进行判断。

------------------------------------分界线------------------------------------
为什么要使用MD5盐值加密?

因为出现两个人或多个以上的原始密码是一样的时候,经过盐值加密就会不一样的密码,更加安全 。

如何做到:

  1. 需要使用SimpleAuthenticationInfo(principal, credentials,
    credentialsSalt, realmName);构造器。
  2. 使用ByteSource credentialsSalt = ByteSource.Util.bytes(userID);来计算盐值。
  3. 盐值需要唯一:一般使用随机字符串或者userID。
    使用new SimpleHash(“MD5”, 密码, 盐值, 加密次数);来计算盐值加密的密码值。

标签:加密,框架,用户,盐值,Shiro,权限,shiro
来源: https://blog.csdn.net/weixin_35099248/article/details/111560970

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有