Apache Shiro 是一个简单易用且功能强大的 Java 安全框架,提供了 认证(Authentication) 、 授权(Authorization) 、 加密Cryptography) 和 会话管理 的功能。
对比另一个安全框架 Spring Security ,Shiro 更简洁也更通用。
Shiro 的核心特性包括:
在核心特性的基础上,又提供了 Web 支持和缓存等特性。
认证实际回答了who are you的问题。
实体代表了 单个 应用用户,维护了用户状态,提供了安全操作,包括认证(登录、登出)、鉴权(访问控制)和会话访问。
Subject currentUser = SecurityUtils.getSubject();
通过提供主体(Principal)和凭证(Credential)完成身份认证过程。
主体(Principal),用于唯一确定实体(Subject)。例如:用户名、邮箱、手机号。
凭证(Credential),用于证明实体(Subject)身份。例如:密码、证书、指纹。
这也同样反映到认证 Token 接口 org.apache.shiro.authc.AuthenticationToken
的定义上:
public interface AuthenticationToken extends Serializable { Object getPrincipal(); Object getCredentials(); }
认证过程大约经历了以下几个步骤: