Spring Boot中集成 Shiro
Shiro 是一个强大、简单易用的 Java 安全框架,主要用来更便捷的认证,授权,加密,会话管等等,可为任何应用提供安全保障。本课程主要来介绍 Shiro 的认证和授权功能。
1. Shiro 三大核心组件
Shiro 有三大核心的组件:Subject
、SecurityManager
和 Realm
。先来看一下它们之间的关系。
- Subject:认证主体。它包含两个信息:Principals 和 Credentials。看一下这两个信息具体是什么。
Principals:身份。可以是用户名,邮件,手机号码等等,用来标识一个登录主体身份; Credentials:凭证。常见有密码,数字证书等等。
说白了,就是需要认证的东西,最常见的就是用户名密码了,比如用户在登录的时候,Shiro 需要去进行身份认证,就需要 Subject 认证主体。
- SecurityManager:安全管理员。这是 Shiro 架构的核心,它就像 Shiro 内部所有原件的保护伞一样。我们在项目中一般都会配置 SecurityManager,开发人员大部分精力主要是在 Subject 认证主体上面。我们在与 Subject 进行交互的时候,实际上是 SecurityManager 在背后做一些安全操作。
- Realms:Realms 是一个域,它是连接 Shiro 和具体应用的桥梁,当需要与安全数据交互的时候,比如用户账户、访问控制等,Shiro 就会从一个或多个 Realms 中去查找。我们一般会自己定制 Realm,这在下文会详细说明。