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

集成 X.509 認證

1. 前言

X.509 通常用于 SSL 證書,瀏覽器自動檢查服務端的證書是否真實,服務器是否可信。在一些情況下,服務端也會要求瀏覽器的證書,實現雙向認證,在這種情況下,Spring Security 在安全過濾器中獲得用戶信息,并校驗其權限是否滿足。

本節(jié)重點討論 Spring Security 與 X.509 認證的集成。

2. X.509 認證概述

X.509 其實是一種證書的格式規(guī)范,它主要包含了以下信息:

版本號
序列號
簽名算法
頒發(fā)者
證書有效期(開始日期,終止日期)
主題
主題公鑰信息(公鑰算法,主體公鑰)
頒發(fā)者唯一身份信息(可選)
主題唯一身份信息(可選)
擴展信息(可選)
簽名

這個證書經過加密后變成了一種身份標識,用來使通信雙方彼此信任。

我們常見的 SSL 證書就是 X.509 證書的一種表現形式。

SSL 是對 HTTP 通訊協(xié)議進行加密通訊的方法,SSL 和 HTTP 的結合也就是常見的 HTTPS 了。

3. Spring Security 集成

3.1 在 Spring Security 開啟 X.509 客戶端認證

要在 Spring Security 項目中開啟 X.509 認證,只需要在 Http 的配置項中加入 x509,具體寫法如下:

<http>
...
    <x509 subject-principal-regex="CN=(.*?)," user-service-ref="userService"/>;
</http>

該對象有兩個可選配置項:

  • subject-principal-regex,這是一個正則表達式,用戶來證書中解析出用戶名,其默認值為 CN=(.*?),,解析出的用戶名值將會傳給 UserDetailsService 用來獲得用戶權限;
  • user-service-ref,該對象用來指定 UserDetailsService 實例,如果當前上下文只有一個 UserDetailsService 實例時,不需要指定此對象。

3.2 在 Tomcat 中配置 SSL

3.2.1 生成 SSL 證書

這里的證書包含服務端證書和客戶端證書。

服務端證書用于配置 Tomcat,使瀏覽器驗證服務器的真實性??蛻舳俗C書需要安裝到用戶瀏覽器中,用來開啟 SSL 客戶端認證。

服務端配置方式如下:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" scheme="https" secure="true"
            clientAuth="true" sslProtocol="TLS"
            keystoreFile="${catalina.home}/conf/server.jks"
            keystoreType="JKS" keystorePass="password"
            truststoreFile="${catalina.home}/conf/server.jks"
            truststoreType="JKS" truststorePass="password"
/>

即使客戶端瀏覽器不提供證書,clientAuth 也同樣可以置為 true,此時客戶端如果不提供 X.509 認證平局,則其不會被授權訪問 Spring Security 資源。

4. 小結

本節(jié)主要內容如下:

  • X.509 是一種證書格式規(guī)范;
  • HTTPS 是 X.509 在 HTTP 安全上的應用;
  • Spring Security 支持開啟 Web 客戶端的證書認證集成功能。

至此,關于 Spring Security 的認證部分就結束了,下節(jié)開始,我們討論 Spring Security 的第二大功能「鑒權」。