《Spring Security》第一章 SpringSecurity 介绍

第一章 SpringSecurity 介绍

应用程序的安全性主要体现在两个方面:身份验证(authentication)授权(authorization)(或叫做 访问控制(access-control)),同样,这也是 SpringSecurity 的两大目标。

一、身份验证 Authentication

Spring Security 支持以下的技术集成,这里只写几种常见的并简单介绍:

  1. HTTP BASIC authentication headers
    1. 请求头身份验证
    2. 需要在请求头中添加 “Authorization: Basic 用户和密码的base64加密字符串”
    3. 或者在url中添加用户名和密码:“http://username:password@api.luokaiii.cn/login”
  2. LDAP
    1. 一种非常常见的跨平台身份验证,常见于大型服务
    2. 通过WSS3.0 和轻量级目录协议LDAP一起搭建的认证方式
    3. 做法是:将用户数据放在LDAP服务器上,通过LDAP服务器上的数据对用户进行认证处理。
    4. 即登录时将用户名密码,发送给 LDAP服务器进行匹配,判断是否通过认证
  3. Form-based authentication
    1. 表单身份验证
  4. OpenID authentication
    1. 一种去中心化的网上身份认证系统
    2. 使用方法:在一个支持OpenID身份提供者的网站上进行注册,然后使用该网站提供的url来进行认证
  5. Jasig Central Authentication Service(CAS)
    1. CAS 集中式认证服务封路系统,也是一个流行的开源单点登录系统
    2. CAS 系统一般分为 CAS Server(负责对用户进行认证) 和 CAS Client(处理用户名、密码等凭证)
    3. 流程为:用户访问Client服务 》 Client重定向至SSO服务器 》 身份认证 》 返回一个 Service Ticket 》 SSO服务器验证Ticket 》 允许访问
  6. Automatic ‘remember-me’ authentication
    1. 记住我
  7. Anonymous authentication
    1. 你们身份验证
  8. Java Open Source Single Sing-On
    1. Java 开源的单点登录 JOSSO

二、Spring Security 依赖管理

获取 Spring Security 的最小依赖如下:

<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
    <version>5.0.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>5.0.5.RELEASE</version>
</dependency>
</dependencies>

Core - spring-security-core.jar

包含核心身份验证和访问控制类、接口、远程处理支持和基本的API。是 Spring Security 应用程序的基础包。

  • org.springframework.security.core
    • 包含Context上下文、UserDetails、UserDetailsService、jdbc验证、memory验证、token、Authority、Principal等支持
  • org.springframework.security.access
    • 访问控制类和接口
    • 包含Method拦截器、AccessDeniedException、认证失败事件、无授权事件、日志监听、访问拦截器等
  • org.springframework.security.authentication
    • 包含数据库验证、RememberMe、Test、Token、Exception等支持
  • org.springframework.security.provisioning
    • 包含创建、更新、删除、修改密码等操作UserDetails的接口,支持memory、JDBC两种类型

Web - spring-security-web.jar

包含过滤器和相关的网络安全基础设施代码。

是 web 身份验证服务和基于 url 访问控制的基础。

Config - spring-security-config.jar

包含 安全名称空间解析代码(或者Java配置代码),即xml配置和java配置。

— 以下包都是可选的 —-

CAS - spring-security-cas.jar

Spring Security 的 CAS 客户端集成,对 CAS 单点登录服务器使用 。SpringSecurityWeb 身份验证的基础。

Test - spring-security-test.jar

支持使用 Spring Security 进行测试。后面会详细说明 Spring Security 是如何进行测试的。

LDAP - spring-security-ldap.jar

LDAP 身份验证和配置代码,如果需要使用 LDAP 身份验证或管理 LDAP 用户条目,则必须使用此依赖

OAuth 2.0 Core - spring-security-oauth2-core.jar

OAuth 2.0 授权框架和 OpenID Connect Core 1.0 的核心类和接口。

客户机、资源服务器、授权服务器都需要此依赖。

OAuth 2.0 Client - spring-security-oauth2-client.jar

OAuth 2.0 客户端,当需要使用 OAuth2.0 登录或者 OAuth客户端支持时使用。

OAuth 2.0 JOSE - spring-security-oauth2-jose.jar

包含 Spring Security 对 JOSE(JavaScritp 对象签名和加密)框架的支持,包含如下规范:

  • JSON Web Token - JWT
  • JSON Web Signature - JWS
  • JSON Web Encryption - JWE
  • JSON Web Key - JWK

OpenID - spring-security-openid.jar

支持 OpenID web 身份验证,用于根据外部 OpenID服务器对用户进行身份验证。

ACL - spring-security-acl.jar

专用域对象 ACL 的实现。

文章作者: koral
文章链接: http://luokaiii.github.io/2019/07/18/读书笔记/《SpringSecurity》/1.序言/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自