1.1 Spring Security简介
Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于 Spring的应用程序的实际标准。Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求.
1.2 安全技术框架对比
目前在整个Java开发的系统中,需要用于身份验证和访问控制框架的框架除了Spring Security, 还有
一个就是Apache shiro框架。
- shiro:Shiro是一个强大而灵活的开源安全框架,能够非常清晰的处理认证、授权、管理会话以及密码加密。如下是它所具有的特点:
- 易于理解的 Java Security API
- 简单的身份认证(登录),支持多种数据源(LDAP,JDBC,Kerberos,ActiveDirectory 等)
- 对角色的简单的鉴权(访问控制),支持细粒度的鉴权
- 支持一级缓存,以提升应用程序的性能
- 内置的基于 POJO 企业会话管理,适用于 Web 以及非 Web 的环境
- 异构客户端会话访问
- 非常简单的加密 API
- 不跟任何的框架或者容器捆绑,可以独立运行
- Spring Security:除了不能脱离Spring,shiro的功能它都有。而且Spring Security对Oauth、OpenID也有支持,Shiro则需要自己手动实现。Spring Security的权限细粒度更高。
OAuth在”客户端”与”服务提供商”之间,设置了一个授权层(authorization layer)。”客户端”不能直接登录”服务提供商”,只能登录授权层,以此将用户与客户端区分开来。”客户端”登录授权层所用的令(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。”客户端”登录授权层以后,”服务提供商”根据令牌的权限范围和有效期,向”客户端”开放用户储存的资料。
OpenID 系统的第一部分是身份验证,即如何通过 URI 来认证用户身份。目前的网站都是依 靠用户名和密码来登录认证,这就意味着大家在每个网站都需要注册用户名和密码,即便你 使用的是同样的密码。如果使用 OpenID ,你的网站地址(URI)就是你的用户名,而你的 密码安全的存储在一个 OpenID 服务网站上(你可以自己建立一个 OpenID 服务网站,也可 以选择一个可信任的 OpenID 服务网站来完成注册)。 与OpenID同属性的身份识别服务商还ⅥeID,ClaimID,CardSpace,Rapleaf,Trufifina ID Card 等,其中ⅥeID通用账户的应用最为广泛
1.3 Spring Security框架功能简介
- 认证: 用户登录, 解决的是”你是谁?”
- 授权: 判断用户拥有什么权限,可以访问什么资源. 解决的是”你能干什么?”
-
1.4 SpringSecurity应用场景
用户登录, 传统基于web开发的项目的登录功能
- 用户授权, 在系统中用户拥有哪些操作权限
- 单一登录, 一个账号只能在同一时间只能在一个地方进行登录, 如果在其他地方进行第二次登录,则剔除之前登录操作
- 集成cas,做单点登录,即多个系统只需登录一次,无需重复登录
集成oauth2 ,做登录授权, 可以用于app登录和第三方登录(QQ,微信等), 也可以实现cas的功能
1.5 入门案例
在Idea中创建springboot项目,选择SpringSecurity和web的依赖创建。就可以使用了。
- 随便创建一个controller访问,就会跳到如下页面(账号默认user,密码在控制台生成):