日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Http基本身份验证在Spring Security中如何工作?

發布時間:2023/12/3 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Http基本身份验证在Spring Security中如何工作? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上一篇文章中,您學習了如何在基于Spring安全性的Java應用程序中啟用Http基本身份驗證 ,現在,我們將進一步進一步了解http基本身份驗證在Spring安全性中的工作原理。 如果您還記得的話,當您使用HTTP Basic進行身份驗證時,客戶端(例如瀏覽器或其他客戶端)會在http請求標頭中發送登錄憑據。 標頭恰當地命名為"Authorization ”,它包含基于64的編碼字符串,該字符串是通過使用冒號將用戶名和密碼連接起來而創建的,例如,如果用戶名是"johnsmith"而密碼是"JOHN3214"則它們將被連接為在使用base 64編碼算法編碼之前,先輸入"johnsmith:JOHN3214" 。

服務器在接收到此類請求時,將提取"Authorization"標頭的值,并使用用于驗證用戶身份的相同算法Base64對該標頭的內容進行解碼。

如果您還記得的話,我們使用<http-basic>l; 在XML配置或httpBasic()上方法HttpSecurity目的是能夠基本驗證。

現在,讓我們看一下Spring安全性如何確切地支持Http Basic身份驗證,以及當它收到登錄請求并在服務器端啟用Http Basic身份驗證時,事物如何在Spring安全性空間內移動。

Spring Security如何處理Http基本身份驗證請求

當您使用<http-basic>l; 配置元素,Spring Security的BasicAuthenticationFitler出現在圖中,它基本上檢查傳入的HTTP請求是否包含"Authorization"標頭,并且其值以“ Basic”開頭。

啟動時還將BasicAuthenticationEntryPoint策略配置到ExceptionTranslationFilter中,該策略用于處理不包含“ Authorization”標頭的請求。

當您從瀏覽器向受保護的URL(例如/admin/users發出http請求而未添加“ Authorization ”標頭時,Spring Security會拋出一個由ExceptionTranslationFilter處理的拒絕訪問的ExceptionTranslationFilter 。

然后,此過濾器將委派給AuthenticationEntryPoint接口的特定實現策略 ,在本例中為BaicAuthenticationEntryPoint 。

此類在響應中添加標頭“ WWW-Authenticate:Basic real =” Spring Security Application”,然后將401(未經授權)的HTTP狀態代碼發送給客戶端(例如您的瀏覽器),該瀏覽器知道如何處理此代碼并起作用相應地,即顯示一個對話框,提示您輸入用戶名和密碼,如下所示:

當您輸入用戶名和密碼并提交請求時,請求再次遵循過濾器鏈,直到到達BasicAuthenticationFilter為止。

此過濾器檢查請求標頭,以“ Basic ”開頭的Authorization標頭的位置,例如Authorization:Basic CDWhZGRpbjpvcGVuc2AzYW11。

然后, BaicAuthentictionFilter提取“ Authorization ”標頭的內容,并使用Base64算法解碼登錄憑據,以從解碼的String中提取用戶名和密碼。

一旦有了該信息,過濾器就會創建一個UsernamePasswordAuthenticationToken對象,并將其發送到身份驗證管理器以標準方式進行身份驗證。

如果您不知道AuthenticationManager在Spring安全性登錄中的作用,那么您可以在Eugen的Learn Spring Security課程中了解有關AuthenticationManager更多信息。

身份驗證管理器將要求身份驗證提供程序(例如,在內存中,基于JDBC的備份或基于LDAP的身份驗證程序)檢索用戶,然后使用它創建一個身份驗證對象。 該過程是標準的,并且獨立于將HTTP基本用于身份驗證,例如也適用于摘要身份驗證。

如果您使用的是RESTful Web服務,則還可以使用curl命令發送帶有“授權”錯誤的HTTP請求,以進行HTTP基本身份驗證。 我發現curl是通過從命令行發送各種HTTP命令來測試Web服務的簡便方法。

您還可以在我的文章中看到如何測試RESTful Web服務,以找到一些curl的實際示例,例如發送發布請求,使用HTTP基本和摘要身份驗證發送請求等。

順便說一句,就像我之前說過的那樣,基本身份驗證并不安全,任何能夠攔截請求的人都可以解碼密碼,因此它僅用于測試目的,而更復雜的摘要身份驗證和OAuth用于實際應用中,特別是如果您想保護REST API。

在接下來的文章中,我將告訴您更多有關保護REST API的信息,但是如果您迫不及待,建議您使用Spring MasterClass來檢閱REST,Spring MasterClass最近也針對Spring Framework 5和Spring Security 5進行了更新。

這就是Spring Security內部HTTP基本身份驗證如何工作的全部內容。 您已經了解了HTTP請求命中受保護的URL并請求基本身份驗證時發生的情況的完整工作流程。 基本上是BasicAuthenticationFilter和BasicAuthenticationEntryPoint一起完成大部分工作。

其他Spring Security教程和資源

學習Spring Security 4 Basic動手

Spring MVC中@RestController和@Controller之間的區別?

Spring中@RequestParam和@PathVaraible之間的區別?

3個在線課程,可以更好地學習Spring Security

Spring中@ Service,@ Component和@Controller之間的區別?

5門學習Spring Core,Spring MVC和Spring Boot的課程

Eugen Paraschiv的Spring安全認證課程

感謝您閱讀本文,如果您喜歡我對Spring Security中Http Basic身份驗證如何工作的解釋,請與您的朋友和同事分享此文章。 如果您對反饋有任何疑問,請留下注釋。

翻譯自: https://www.javacodegeeks.com/2018/01/http-basic-authentication-works-spring-security.html

總結

以上是生活随笔為你收集整理的Http基本身份验证在Spring Security中如何工作?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。