安全框架
安全框架:
概念:安全框架是对访问权限的控制,应用的安全性包括用户认证(Authentication)和用户授权(Authorization)
用户认证:验证某个用户是否是系统中的合法主体,一般需要提供用户名和密码,通过验证账户密码进行认证的过程。
用户授权:指的是验证某个用户是否有权限执行某个操作。
1.shiro
Apache shiro是一个强大的且简单易用的java安全框架,能够清晰的处理身份验证、授权、管理会话以及加密。
利用其易于理解的API,首选推荐框架。
Shiro 主要分为两个部分就是认证和授权,在个人感觉来看就是查询数据库做相应的判断而已,Shiro只是一个框架而已,
其中的内容需要自己的去构建,前后是自己的,中间是Shiro帮我们去搭建和配置好的。
功能:三大核心组件,Subject, SecurityManager 和 Realms。
一:Subject:即当前操作用户,广义:当前跟软件交互的东西。
二:SecurityManager:shrio的核心,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务SecurityManager:shrio的核心,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
典型的Facede模式:外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。
三:realm,shiro和安全数据间的桥梁或者是连接器,当完成认证,shrio可以从应用配置中Realm中读取用户的信息。
2.spring security
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。
它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC(控制反转),DI( 依赖注入)和AOP(面向切面编程)功能,
Spring Security对Web安全性的支持大量地依赖于Servlet过滤器。这些过滤器拦截进入请求,并且在应用程序处理该请求之前进行某些安全处理。
Spring Security提供有若干个过滤器,它们能够拦截Servlet请求,并将这些请求转给认证和访问决策管理器处理,从而增强安全性。根据自己的需要,可以使用适当的过滤器来保护自己的应用程序。
Servlet:处理请求和响应的容器,其生命周期是:init、servce(处理do Post/Get请求)、destory销毁
总结:
Shiro特点
1、易于理解的 Java Security API;
2、简单的身份认证(登录),支持多种数据源(LDAP,JDBC,Kerberos,ActiveDirectory 等);
3、对角色的简单的签权(访问控制),支持细粒度的签权;
4、支持一级缓存,以提升应用程序的性能;
5、内置的基于 POJO 企业会话管理,适用于 Web 以及非 Web 的环境;
6、异构客户端会话访问;
7、非常简单的加密 API;
8、不跟任何的框架或者容器捆绑,可以独立运行。
Spring Security特点
除了不能脱离Spring,shiro的功能它都有。
而且Spring Security对Oauth、OpenID也有支持,Shiro则需要自己手动实现。Spring Security的权限细粒度更高(还未发现高在哪里)。