⭐ Shiro 工作原理
📌 Shiro 核心功能:
Shiro
是一个安全框架,不提供用户以及权限的维护(用户的权限管理需要我们自己去设计对应的数据库表信息进行维护)。
Anthentication
认证:验证用户是否有响应的身份(进行登录)Anthorization
授权,即权限验证:对已经通过认证的用户检查是否具有某个权限或者角色,从而控制是否能进行某种操作。Session Management
会话管理:用户在认证成功之后创建会话,在没有退出之前,当前用户的所有信息都会保存在这个会话Session
中。(可以是普通的JavaSE
应用,也可以是Web
应用)Cryptography
加密:针对用户的敏感信息进行加密处理,Shiro
提供了加密机制
同时Shiro
还提供了其他的特性功能支持:
Web Support
:Shiro
提供了过滤器,可以通过过滤器拦截Web
请求来处理Web
应用的访问控制Caching
缓存支持:Shiro
可以缓存用户信息以及用户的角色权限信息,可以提高执行效率Concurreny
:Shiro
支持多线程应用Testing
:Shiro
提供测试支持Run As
:允许用户以另外一个身份去访问Remember Me
:Shiro
提供了记住权限身份信息的功能
📌 Shiro 核心组件:
1.Subject:
Subject
表示待授权和认证的用户。
2.Security Manager:
Security Manager
是Shiro
框架的核心,Shiro
通过Security Manager
来进行内部实例的管理,并通过它来提供各种安全管理的各种服务。 Security Manager
中包含以下组件:
Authenticator
:认证器Authorizer
:授权器Session Manager
:会话管理器Caching Manager
:缓存管理器
3.Realms:
Realms
相当于Shiro
进行认证和授权的数据源,充当了Shiro
与安全数据(数据库数据等)之间的 "桥梁" 或者 "连接器"。当用户进行认证(登录)和授权(访问控制)验证时,Shiro
会在应用配置的Realm
中查找用户及权限信息。
📌 Shiro 认证授权流程:
通过Subject.login(token)
进行登录,就会将Token
中包含用户信息(账号和密码)传递给Security Manager
。Security Manager
就会调用Authenticator
进行身份认证。Authenticator
把Token
传递给对应的Realm
。Realm
更具得到的Token
,调用doGetAuthenticationInfo()
方法进行认证,如果认知失败就会抛出异常提示认证器。异常信息会一层一层向上抛出直到返回Subject
,当Subject
抛出异常则表示认证失败。