什么是 Shiro
-
身份验证(Authentication) -
授权(Authorization) -
会话管理(Session Management) -
加密(Cryptography)
管理员可以为应用系统创建不同的角色,角色可以绑定一组权限,之后管理员可以为不同用户分配一个或多个角色,并在应用正常提供服务期间在后台管理网页中随时更改所有这些功能。
Shiro 框架的体系结构
Subject
Subject
本质上是系统用户的一个特定安全 "视图",可以表示会与应用程序交互的任何东西。Subject
实例都强制绑定到 SecurityManager
上,当我们调用 Subject
的方法时,具体的操作最终都会转交给相关的 SecurityManager
进行处理。SecurityManager
SecurityManager
是 Shiro 体系结构的核心,它协调着内部的其它安全组件,这些安全组件一起形成一种互相协作支持的关系,共同完成 Shiro 提供的所有功能。对于开发人员而言,一旦为应用程序配置了 SecurityManager,通常就不需要再理会它,我们只需要和 Subject
的 API 进行交互就可以了,这在上面的流程图中也有清晰的体现。Realm
Realm
是 Shiro 与应用程序数据之间交换的 “桥梁”,当 Shiro 真正需要与安全性相关的数据(例如用户帐户,用户角色,权限等)进行交互以执行身份验证和授权时,Shiro 会从一个或多个为应用程序配置的 Realm
中查找这些数据。Realm
理解为特定于安全性的 DAO
,它封装了对安全性相关数据的访问,在配置 Shiro 时,我们必须至少指定一个 Realm
以用于身份验证(或授权)。详细架构
Subject
,Security Manager
和 Realm
三者各自在整个 Shiro 框架中所扮演的角色,以及担负的职责。SecurityManager
的实现实际上并没有做实质性的事情。相反,SecurityManager
的作用是作为一个轻量级的 “容器” 组件,将几乎所有的行为委托给封装在内部的其它组件,这是 “包装器” 设计模式的一种使用。Authenticator
)和访问控制器(Authorizer
)进行简单说明。Authenticator
)是负责执行和响应用户认证(登录)的组件。当用户尝试登录时,该逻辑由 Authenticator
执行,Authenticator
知道如何与一个或多个 Realm
进行协调,从这些 Realm
中获取用户的身份信息,然后完成身份认证过程。Authorizer
)是负责决定用户对应用中具体资源能否访问和操作的组件,是最终决定用户是否被允许做某事的机制,与 Authenticator
一样,Authorizer
也知道如何与多个 Realm
协调,以获取角色和权限信息,Authorizer
使用这些信息来确定用户是否被允许执行某个动作。免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论