Shiro(一) - 简介

什么是 Shiro

Shiro 是一个强大且易用的 Java 安全框架, 执行身份验证、授权、密码和会话管理。

shiro 能做什么?

  • 认证:验证用户的身份

  • 授权:对用户执行访问控制:判断用户是否被允许做某事

  • 会话管理:在任何环境下使用 Session API,即使没有 Web 或 EJB 容器。

  • 加密:以更简洁易用的方式使用加密功能,保护或隐藏数据防止被偷窥

  • Realms:聚集一个或多个用户安全数据的数据源

  • 单点登录(SSO)功能。

  • 为没有关联到登录的用户启用 "Remember Me“ 服务

Shiro 的四大核心部分

  • Authentication(身份验证):简称为 “登录”,即证明用户是谁。

    扫描二维码关注公众号,回复: 5827818 查看本文章
  • Authorization(授权):访问控制的过程,即决定是否有权限去访问受保护的资源。

  • Session Management(会话管理):管理用户特定的会话,即使在非 Web 或 EJB 应用程序。

  • Cryptography(加密):通过使用加密算法保持数据安全

shiro 的三个核心组件

  • Subject :正与系统进行交互的人,或某一个第三方服务。所有 Subject 实例都被绑定到(且这是必须的)一个 SecurityManager 上。

  • SecurityManager:Shiro 架构的心脏,用来协调内部各安全组件,管理内部组件实例,并通过它来提供安全管理的各种服务。当 Shiro 与一个 Subject 进行交互时,实质上是幕后的 SecurityManager 处理所有繁重的 Subject 安全操作。

  • Realms :本质上是一个特定安全的 DAO。当配置 Shiro 时,必须指定至少一个 Realm 用来进行身份验证和 / 或授权。Shiro 提供了多种可用的 Realms 来获取安全相关的数据。如关系数据库 (JDBC),INI 及属性文件等。可以定义自己 Realm 实现来代表自定义的数据源。

RBAC 概念

RBAC 是当下权限系统的设计基础,同时有两种解释:

  • Role-Based Access Control,基于角色的访问控制。即,你要能够删除产品,那么当前用户就必须拥有产品经理这个角色。
  • Resource-Based Access Control,基于资源的访问控制。即,你要能够删除产品,那么当前用户就必须拥有删除产品这样的权限。

数据库

基于 RBAC 概念, 就会存在 3 张基础表: 用户,角色,权限, 以及 2 张中间表来建立用户与角色的多对多关系,角色与权限的多对多关系。 用户与权限之间也是多对多关系,但是是通过 角色间接建立的。

注: 补充多对多概念: 用户和角色是多对多,即表示:
一个用户可以有多种角色,一个角色也可以赋予多个用户。
一个角色可以包含多种权限,一种权限也可以赋予多个角色。

盐加密

通常,我们使用的 MD5 加密,可以利用穷举法破解,不安全,这个时候,就引入了盐的概念。

盐是什么意思呢?和炒菜加盐一样,这里,我们就是在对 MD5 加密后的密码加盐,加了不同的盐,不同分量的盐,结果也就不一样了。此处的盐,就是一个随机数

虽然每次 123 md5 之后都是 202CB962AC59075B964B07152D234B70,但是,我加上盐,即 123 + 随机数,那么 md5 值不就不一样了吗? 这个随机数,就是盐,而这个随机数也会在数据库里保存下来,每个不同的用户,随机数也是不一样的。

再就是加密次数,加密一次是 202CB962AC59075B964B07152D234B70,加密两次,就是另一个数了。而黑客即便是拿到了加密后的密码,如果不知道到底加密了多少次,也是很难办的。

猜你喜欢

转载自blog.csdn.net/SGamble/article/details/85019016