什么是权限管理?
权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。权限管理包括身份认证和授权两部分。对于需要访问控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限才可访问。
什么是Shiro?
Shiro是一个Java的安全(权限)框架,相对简单,对比Spring Security,没有Spring Security的功能强大。但是实际工作中可能不需要那么复杂 的东西,所以使用小而简单的Shiro就够了。其不仅适用于JavaSE环境,也适用于JavaEE环境。Shiro可以完成认证,授权,加密,会话管理,web集成,缓存等。
三大核心组件
Shiro有三大核心组件,即Subject、SecurityManager和Realm
Subject: 为认证主体。应用代码直接交互的对象是Subject,Subject代表了当前的用户。包含Principals和Credentials两个信息。
Pricipals:代表身份。可以是用户名、邮件、手机号码等等,用来标识一个登陆主题的身份。 Credentials:代表凭证。常见的有密码、数字证书等等。
也就是说两者代表了认证的内容,最常见就是用户名密码了。用Shiro进行身份认证,其中就包括主体认证。
SecurityManager:为安全管理员。是Shiro架构的核心。与Subject的所有交互都会委托给SecurityManager, Subject相当于是一个门面,而SecurityManager才是真正的执行者。它负责与Shiro 的其他组件进行交互。
Realm:是一个域。充当了Shiro与应用安全数据间的“桥梁”。Shiro从Realm中获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm中获取相应的用户进行比较,来确定用户的身份是否合法;也需要从Realm得到用户相应的角色、权限,进行验证用户的操作是否能过进行,可以把Realm看成DataSource,即安全数据源。
Shrio内部架构