因为做了权限的项目经理,so,恶补一下一个权限框架:shiro。其实作为框架首要目标是易于使用和理解。安全有时候是很复杂的,甚至是痛苦的,但框架没有必要这样。框架应该尽可能掩盖复杂的地方,露出一个干净而直观的API,来简化开发人员在使他们的应用程序安全上的努力。
Apche Shiro就是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。说到Shiro,就要说一下什么是权限管理。权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。权限管理包括用户认证和授权两部分。
用户认证
其实大多数系统都会有用户认证,因为大多数系统都有用户的存在,有用户使用系统就要登录。通常我们使用的用户认证也就是通过验证用户名和密码是否正确。或者再常用的是使用指纹打卡机。系统验证了用户身份的合法性,用户就可访问系统的资源。但是想要不同用户有资源,就引出了用户授权。
关键对象
Subject:主题,可以使用户,也可能是程序,都要去访问系统的资源,系统需要对subject进行身份认证。
principal:身份信息,通常是唯一的,一个主题还有多个身份信息,单都有一个主身份信息(Primary Principal)。
Credential:凭证信息,可以是密码、证书、指纹。
用户认证流程
其实用户认证,就是主体在进行身份认证时需要提供身份信息和凭证信息。
用户授权
用户授权就是对用户所能访问的资源进程控制。授权过程可以理解为:who对what进行how操作。
关键对象
who:主题,即上文的subject
what:资源,resource,subject必须具备资源的访问权限才可访问资源。
how:权限/许可permission,针对资源的权限或许可,subject具有permission访问资源,如何访问需要定义permission。
用户授权流程
其实,用户认证就是在用户登录的时候认证用户是否存在,密码是否正确。在用户登录之后是什么样子,就要靠授权了,首先给不同的用户分配不同的角色,然后给不同的角色授权不同的资源,不同的用户也就有了不同的权限,即可使用或者可看到的资源就会因人因角色而异了。