Shiro 是一个简洁,易用的安全框架。
Shiro 架构有三个基本的概念: Subject, SecurityManager and Realms。
High Level 架构
Subject,
实际就是我们通常所指的用户,但是,为什么不用User 呢, 这是因为User,我们通常理解为实际的用户, 而用Subject则表示Shiro面向的可以是一个实际用户,也可能是第三方的服务,系统,或者Job等。
每个Subject实例都会绑定对应的SecurityManager。
SecurityManager
是整个Shiro的核心。典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
Realms
Realms 是一个连接Shiro和应用程序安全数据之间的"桥梁"。当进行鉴权和授权的时候,Shiro会查询一个或者多个Realms。Shiro提供一些默认的Realm,例如LDAP, JDBC和INI文件中。
详细架构
- Authenticator, 鉴权, 登录的时候检查是否能登录
Authentication Strategy, 对于多个Realm的情况,需要一个策略来决定用户是否可以登录。例如,一个Realm能通过,但是另一个Realm鉴权失败,用户可否登录? - Authorizer, 授权 ,访问控制,表示一个用户可以做什么操作,不可以做什么。
所以我们可以看到,鉴权的过程是:
而授权的过程是: