1.1 Spring Security简介

Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于 Spring的应用程序的实际标准。Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求.

1.2 安全技术框架对比

目前在整个Java开发的系统中,需要用于身份验证和访问控制框架的框架除了Spring Security, 还有
一个就是Apache shiro框架。

  1. shiro:Shiro是一个强大而灵活的开源安全框架,能够非常清晰的处理认证、授权、管理会话以及密码加密。如下是它所具有的特点:
  • 易于理解的 Java Security API
  • 简单的身份认证(登录),支持多种数据源(LDAP,JDBC,Kerberos,ActiveDirectory 等)
  • 对角色的简单的鉴权(访问控制),支持细粒度的鉴权
  • 支持一级缓存,以提升应用程序的性能
  • 内置的基于 POJO 企业会话管理,适用于 Web 以及非 Web 的环境
  • 异构客户端会话访问
  • 非常简单的加密 API
  • 不跟任何的框架或者容器捆绑,可以独立运行
  1. 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. 认证: 用户登录, 解决的是”你是谁?”
  2. 授权: 判断用户拥有什么权限,可以访问什么资源. 解决的是”你能干什么?”
  3. 安全防护,防止跨站请求,session 攻击等

    1.4 SpringSecurity应用场景

  4. 用户登录, 传统基于web开发的项目的登录功能

  5. 用户授权, 在系统中用户拥有哪些操作权限
  6. 单一登录, 一个账号只能在同一时间只能在一个地方进行登录, 如果在其他地方进行第二次登录,则剔除之前登录操作
  7. 集成cas,做单点登录,即多个系统只需登录一次,无需重复登录
  8. 集成oauth2 ,做登录授权, 可以用于app登录和第三方登录(QQ,微信等), 也可以实现cas的功能

    1.5 入门案例

  9. 在Idea中创建springboot项目,选择SpringSecurity和web的依赖创建。就可以使用了。

  10. 随便创建一个controller访问,就会跳到如下页面(账号默认user,密码在控制台生成):

1651652242(1).jpg