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运行流程:
- Subject (啥绝):当前用户的操作
- SecurityManager:用于管理所有的Subject
- Realms(玩死):用于进行权限信息的验证
其他组件:
Authentication 和 Authorization
在shiro的用户权限认证过程中其通过两个方法来实现:
- Authentication:是验证用户身份的过程。
- Authorization:是授权访问控制,用于对用户进行的操作进行人证授权,证明该用户是否允许进行当前操作,如访问某个链接,某个资源文件等。
除了以上几个组件外,Shiro还有几个其他组件:
- SessionManager :Shiro为任何应用提供了一个会话编程范式。
- CacheManager :对Shiro的其他组件提供缓存支持。
Shiro工作流程
也就是说对于我们而言,最简单的一个Shiro应用:
- 应用代码通过Subject来进行认证和授权,而Subject又委托给SecurityManager;
- 我们需要给Shiro的SecurityManager注入Realm,从而让SecurityManager能得到合法的用户及其权限进行判断。
------------------------------------分界线------------------------------------
为什么要使用MD5盐值加密?
因为出现两个人或多个以上的原始密码是一样的时候,经过盐值加密就会不一样的密码,更加安全 。
如何做到:
- 需要使用SimpleAuthenticationInfo(principal, credentials,
credentialsSalt, realmName);构造器。 - 使用ByteSource credentialsSalt = ByteSource.Util.bytes(userID);来计算盐值。
- 盐值需要唯一:一般使用随机字符串或者userID。
使用new SimpleHash(“MD5”, 密码, 盐值, 加密次数);来计算盐值加密的密码值。
标签:加密,框架,用户,盐值,Shiro,权限,shiro 来源: https://blog.csdn.net/weixin_35099248/article/details/111560970