第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Spring Security 簡介

1. 前言

不難證明,外賣和我們的生活越來越緊密,我們也許天天都點外賣,那有沒有想過,為什么我們敢把自己的姓名、身份證、手機、銀行卡、家庭住址等等一系列敏感信息都放心地告訴給第三方平臺?這離不開一個詞「信任」。當我點了一單外賣,為什么飯店看得到我的訂單?為什么配送員可以找得到我家?為什么客服中心可以處理投訴?為什么財務人員可以劃撥?這里又出現(xiàn)了另一個詞「職責」。

所謂「信任」,就是我知道你是誰,我也相信你做的事;所謂「職責」,就是我們相互獨立又共同協(xié)作。在 IT 系統(tǒng)中,「信任」是通過「認證」來完成的,「職責」是通過「權(quán)限」來實現(xiàn)的,它們又被統(tǒng)稱為「應用安全」??梢?,「安全」是 IT 系統(tǒng)正常運營的必要條件之一。既然「安全」如此重要,那有沒有一套框架可以幫助 Spring Boot 開發(fā)者快速地、規(guī)范地、有效地構(gòu)建自己 IT 系統(tǒng)的安全環(huán)境呢?當然有,那就是本次課程的主題:「Spring Security」安全框架。

2. Spring Security 簡介

2.1 Spring Security 的誕生

Spring Security 是 Spring 家族的中,提供認證、授權(quán)和攻擊防護功能的一套安全框架。Spring Security 支持命令式和響應式兩種開發(fā)模式,它也是 Spring 應用在安全框架方面的公認標準。

Spring Security 的前身是 Acegi security。Acegi security 在 1.0.7 版本之后便不再跟新,轉(zhuǎn)而以 Spring Security 2.0 的身份出現(xiàn)在 Spring 大家庭中。截止今日(2020 年 5 月 17 日),Spring Security 正式版本已經(jīng)發(fā)展至 5.3,并且已經(jīng)公布 5.4 的預覽版本。

2.2 Spring Security 和同類型框架的比較

Java 環(huán)境下有兩大安全框架:Spring Security 和 Shiro。

和 Spring Security 一樣,Shiro 同樣隸屬于一個強大的軟件社區(qū): Apache。二者的功能類似,都完成了認證和鑒權(quán)功能,都有超過十年的發(fā)展歷史。Shiro 是一個獨立的安全框架,Spring Security 則與 Spring 關(guān)聯(lián)緊密,所以在二者的選擇上,可以簡單的用如下原則區(qū)分:

如果我們開發(fā) Spring Boot 項目,那優(yōu)先建議使用 Spring Security 安全框架。如果我們開發(fā)其他類型的項目,那請使用 Shiro 作為安全框架。

Spring Security 安全框架適合為 Spring Boot 項目提供安全保護,所以如果您是個 Spring Boot 項目的開發(fā)人員,且正在尋找一種可以和 Spring Boot 輕松集成的,用于認證和鑒權(quán)的框架時,可以優(yōu)先考慮 Spring Security。

2.3 Spring Security 相關(guān)資源:

3. Spring Security 的特性

Spring Security 的核心特性包括:認證和授權(quán)、常規(guī)攻擊防范、與 Servlet 接口集成、與 Spring MVC 集成等。

認證和授權(quán)的目的是,讓系統(tǒng)知道使用者是誰(認證)?是什么樣的身份?允許他做什么?禁止他做什么?通常的做法是要求用戶輸入自己的用戶名和密碼,來實現(xiàn)登錄和鑒權(quán)的過程。

常規(guī)攻擊防范在 Spring Security 安全框架中是默認開啟的,常見的威脅抵御方式有:

  • 防止偽造跨站請求(CSRF)
  • 安全響應頭(HTTP Response headers)
  • HTTP 通訊安全

作為 Spring 大家族的一員,Spring Security 在與 Spring 引用,尤其是與 Spring boot 應用的結(jié)合時,顯得極為便利。

圖片描述

Spring Security 三大功能

3. 功能模塊

Spring Security 安全框架,內(nèi)置一系列的安全子模塊,用來滿足不同類型的應用場景。自 3.0 版本開始,這些子模塊被分散到了不同的 Jar 包中,開發(fā)者可以更加清晰地、直接地選擇自己需要的模塊,簡單有效地完善自己的業(yè)務功能。

Spring Security 包含的功能模塊如下:

  • Core

    核心模塊,包含認證、訪問控制、集成支持、配置接口等,所有 Spring Security 項目都需要依賴它。

    對應的 Jar 文件:spring-security-core.jar。

  • Remoting

    Spring security 中的 Remoting 模塊提供了與 Spring Remoting 集成的能力。當我們要開發(fā)遠程客戶端的時候需要用到此模塊。

    對應的 Jar 文件:spring-security-remoting.jar。

  • Web

    Spring security 中的 Web 模塊,提供了接口過濾器和 Web 安全的基礎(chǔ)代碼。例如 Servlet 應用接口。如果我們開發(fā)的是基于 Web 認證的服務,或者是基于 URL 的訪問控制時,將需要用到此模塊。

    對應的 Jar 文件:spring-security-web.jar

  • Config

    Spring security 中的 Config 模塊,包含了安全框架命名空間的解析功能與提供了 Java 配置代碼。當我們需要使用 XML 方式或者 Java 配置方式時,需要用到此模塊。

    對應的 Jar 文件:spring-security-config.jar

  • LDAP

    Spring security 中的 Ldap 模塊,提供了對 Ldap 認證的支持,當我們使用 Ldap 認證時,需要用到此模塊。

    對應的 Jar 文件:spring-security-ldap.jar

  • OAuth 2.0 相關(guān)模塊

    Spring security 提供了對 OAuth 2.0 的支持,具體分為以下幾個模塊。

    • OAuth 2.0 Core

      OAuth 2.0 Core 模塊是 Spring security 安全框架中,對 OAuth 2.0 支持的核心模塊,包含了認證功能與 OpenID 的基本支持。

      對應的 Jar 文件:spring-security-oauth2-core.jar

    • OAuth 2.0 Client

      OAuth 2.0 Client 模塊是 OAuth 2.0 客戶端認證授權(quán)基礎(chǔ),當我們需要在客戶端實現(xiàn) OAuth 2.0 登錄功能時,需要添加此模塊。

      對應的 Jar 文件:spring-security-oauth2-client.jar

    • OAuth 2.0 JOSE

      OAuth 2.0 JOSE (Javascript Object Signing and Encryption)模塊,提供了基于 JS 對象的認證與加解密功能,核心目標是實現(xiàn) JS 安全傳輸能力。主要功能有:JWT、 JWS、JWE、JWK。

      對應的 Jar 文件:spring-security-oauth2-jose.jar

    • OAuth 2.0 Resource Server

      OAuth 2.0 resource server 模塊,提供了 OAuth 2.0 資源服務的基本功能,也就是對資源的訪問控制。

      對應的 Jar 文件:spring-security-oauth2-resource-server.jar

  • ACL

    ACL 模塊提供了基于域?qū)ο蟮脑L問控制。

    對應的 Jar 文件:spring-security-acl.jar

  • CAS

    CAS 模塊適用于需要使用 CAS 單點登錄的系統(tǒng),可以用于單點登錄客戶端的集成。

    對應的 Jar 文件:spring-security-cas.jar

  • OpenID

    OpenID 模塊適用于需要集成外部 OpenID 的認證系統(tǒng)。使用該模塊功能同時還需要依賴 OpenID4Java 。

    對應的 Jar 文件:spring-security-openid.jar

  • Test

    Test 模塊提供了對 Spring security 進行單元測試的能力。

    對應的 Jar 文件:spring-security-test.jar

4. 開始前準備

Spring Security 要求使用 JDK 8 以上的 Java 編譯版本。

在 Spring Boot 項目中添加 Spring Security 支持非常方便,只需要使用 Spring Boot 提供的 spring-boot-starter-security 啟動器即可。

在非 Spring Boot 項目中使用 Spring Security 則需要添加 Spring Security 核心組件,如:spring-security-configspring-security-web 等。

5. 小結(jié)

Spring Security 是 Spring 家族中規(guī)范化的安全框架。它幫助我們輕松地構(gòu)建應用安全環(huán)境,可以快速地實現(xiàn)「認證」和「權(quán)限」管理,它幫助我們規(guī)范化開發(fā)過程,是一套完整、成熟、易用的開發(fā)框架。

下一節(jié),我們將嘗試創(chuàng)建第一個 Spring Security 應用。