spring security和shiro的异同web
相同点算法
一、认证功能二、受权功能三、加密功能四、会话管理五、缓存支持spring
六、rememberMe功能apache
不一样点缓存
一、Spring Security 基于Spring 开发,项目若使用 Spring 做为基础,配合 Spring Security 作权限更加方便,而 Shiro 须要和 Spring 进行整合开发;安全
二、Spring Security 功能比 Shiro 更加丰富些,例如安全维护方面;框架
三、Spring Security 社区资源相对比 Shiro 更加丰富;ide
Spring Security对Oauth、OpenID也有支持,Shiro则须要本身手动实现。并且Spring Security的权限细粒度更高网站
spring security 接口 RequestMatcher 用于匹配路径,对路径作特殊的请求,相似于shiro的加密
抽象类 PathMatchingFilter,可是 RequestMatcher 做用粒度更细
四、Shiro 的配置和使用比较简单,Spring Security 上手复杂些;
五、Shiro 依赖性低,不须要任何框架和容器,能够独立运行.Spring Security 依赖Spring容器;
六、shiro 不单单能够使用在web中,还支持非web项目它能够工做在任何应用环境中。在集群会话时Shiro最重要的一个好处或许就是它的会话是独立于容器的。
apache shiro的话,简单,易用,功能也强大,spring官网就是用的shiro,可见shiro的强大。
spring security 和 shiro 对加密都提供了各类各样的支持 例如 BCryptPasswordEncoder 采用 SHA-256 + 随机盐 + 秘钥 对密码进行加密。shrio 的 SimpleHash 提供散列算法的支持,生成数据的摘要信息.
shiro 的 AuthorizingRealm 的 doGetAuthorizationInfo方法 与 doGetAuthenticationInfo 一个 是定义 获取 用户权限信息 的方法,一 个 是 定义用户身份认证及获取用户身份的方法,
而 spring security 也有 资源 角色 受权器 FilterInvocationSecurityMetadataSource,定义资源url 与 角色权限的关系 , 决策 管理器 AccessDecisionManager 定义权限知足的规则
注:
OAuth在”客户端”与”服务提供商”之间,设置了一个受权层(authorization layer)。”客户端”不能直接登陆”服务提供商”,只能登陆受权层,以此将用户与客户端区分开来。”客户端”登陆受权层所用的令牌(token),与用户的密码不一样。用户能够在登陆的时候,指定受权层令牌的权限范围和有效期。
“客户端”登陆受权层之后,”服务提供商”根据令牌的权限范围和有效期,向”客户端”开放用户储存的资料。
OpenID 系统的第一部分是身份验证,即如何经过 URI 来认证用户身份。目前的网站都是依靠用户名和密码来登陆认证,这就意味着你们在每一个网站都须要注册用户名和密码,即使你使用的是一样的密码。若是使用 OpenID ,你的网站地址(URI)就是你的用户名,而你的密码安全的存储在一个 OpenID 服务网站上(你能够本身创建一个 OpenID 服务网站,也能够选择一个可信任的 OpenID 服务网站来完成注册)。
与OpenID同属性的身份识别服务商还有ⅥeID,ClaimID,CardSpace,Rapleaf,Trufina ID Card等,其中ⅥeID通用帐户的应用最为普遍。