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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

如何使用Java和XML Config在Spring Security中启用HTTP基本身份验证

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

在上一篇文章中,我向您展示了如何在Java應用程序中啟用Spring安全性 ,今天我們將討論如何使用Spring Security 在Java Web應用程序中啟用Basic HTTP身份驗證 。 如果您使用的是Spring Security 3.1或更低版本,我將向您展示如何同時使用Java配置和XML配置,但是在此之前,讓我們了解一下
什么是Http基本身份驗證 ,為什么需要它? 在Web應用程序中對用戶進行身份驗證的最常見方法之一是使用表單登錄,即,您提供登錄頁面,用戶將輸入其用戶名和密碼進行身份驗證。 這對人類用戶非常有用,但是有時您無法使用登錄表單進行身份驗證。

例如,如果您的應用程序用戶不是人類用戶或其他應用程序,則不適合使用表單登錄。 例如,在RESTful Web服務客戶端不是人工的情況下,而不是在其他服務器上運行某些其他應用程序的情況下,這也很常見。

在許多這樣的場景中,您的客戶端不是人工的,而是其他系統,例如,所有JMS客戶端在沒有用戶交互的情況下生成和使用消息,并且ESB系統集成應用程序也是如此。

如果您正在處理這種情況,那么您需要考慮啟用身份驗證而不是表單登錄。 在那種情況下,使用HTTP Basic身份驗證來驗證服務用戶是有意義的。

HTTP基本身份驗證如何工作

如果使用HTTP基本身份驗證,則不使用表單,而是在HTTP請求標頭上傳遞用戶登錄憑據,恰好是“授權”請求標頭。 該標頭允許您將用戶名和密碼發送到請求標頭中,而不是在請求正文中發送,就像表單登錄身份驗證一樣。 這是驗證REST客戶端的理想選擇。

啟用HTTP基本身份驗證后,正在發送請求的客戶端(例如,瀏覽器或REST客戶端)將用戶名和密碼連接在一起,并在它們之間使用冒號,然后使用Base64編碼對所得字符串進行編碼。 然后將此字符串發送到請求的“ Authorization”標頭中。

例如,如果您的REST客戶端使用用戶名"userId"和密碼"passwd" ,則客戶端將創建字符串"userId:passwd"并以64為基數對其進行編碼,然后再將其發送到Authentication標頭中。

當此請求到達服務器時,服務器將提取Authorization標頭的值,并使用base64算法對密碼進行解碼并驗證用戶身份。

如果請求沒有身份驗證標頭,則服務器將拒絕請求并返回401響應,并附加標頭"WWW-Authenticate : Basic realm"以指示客戶端需要在請求標頭中發送用戶名和密碼以進行身份??驗證。

如果使用瀏覽器,它將讀取該響應并顯示一個登錄對話框,以允許您輸入用戶名和密碼。 順便說一句,這不是發送登錄憑據的最安全的方法,因為您看到的只是基于64位的編碼。

有更好的方法來對用戶進行身份驗證,例如,使用Spring 5中引入的摘要身份驗證和OAuth 2.0。稍后我將詳細介紹,但如果您有興趣,可以查看
Baeldung提供的Spring Security認證課程 ,以進一步了解它們。

如何使用XML配置在Spring Security中啟用Http基本身份驗證

如果您正在使用XML配置文件在應用程序中啟用Spring安全性或在Spring security 3.1或更低版本上工作,則可以使用<http-basic />配置元素在Java Web應用程序中啟用Http基本身份驗證。

如果使用表單登錄,則可以將配置文件applicationContext-security.xml的<login-form>元素替換為<http-basic /> 。

您還需要在配置文件中包含Spring安全名稱空間,然后重新啟動應用程序以選擇此更改。 如果您不了解什么是名稱空間及其如何幫助您編寫簡潔的配置文件,建議您閱讀Craig Walls編寫的Spring in Action 4th Edition 。 關于Spring框架的出色入門書籍,它基于Spring安全性和Spring引導。

啟用HTTP基本身份驗證的示例Spring安全配置文件如下所示:

applicationContext-security.xml

<?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" xsi:schemaLocation=" http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"><http pattern="/home" security="none"/> <http use-expressions="true"><intercept-url pattern="/**" access="isAuthenticated()" /><http-basic /> </http><authentication-manager><authentication-provider><user-service><user name="userId" password="passwd" authorities="ROLE_USER" /></user-service></authentication-provider> </authentication-manager></beans:beans>Read more: http://javarevisited.blogspot.com/2018/01/how-to-enable-http-basic-authentication-spring-security-java-xml-configuration.html#ixzz54Qt8drKX

在這種情況下,只有相關信息是<http-basic />標記,該標記為整個應用程序啟用HTTP基本身份驗證,但讓我稍微解釋一下配置:

1)第一行說對于/ home,我們不需要任何安全性,因此任何人都可以訪問它。

2)第二行<http>說我們正在使用Spring表達式語言,這就是為什么我們可以使用isAuthenticated()方法來攔截url的原因。 如果您不熟悉Spring表達式語言,則可以首先通過Spring Master Class進行學習。

3) <intercept-url pattern="/**" access="isAuthenticated()" />表示所有URL都需要認證,并且它們將使用HTTP基本認證機制。

4)身份驗證管理器不是重點,但在這里我們使用的是內存中身份驗證提供程序,其中僅配置了一個用戶,用戶名為"userId" ,密碼為"passwd" 。

我們還可以使用Java配置啟用相同的HTTP基本身份驗證,讓我們看看。

如何在Spring Security中使用Java配置啟用Http Basic身份驗證

如果是Java配置,則可以配置調用方法的安全性,如下所示。 使用Java配置啟用HTTP Basic身份驗證就像調用
httpBasic()對象上的httpBasic configure()方法傳遞給configure()方法。

這是啟用HTTP基本身份驗證代碼的Spring Security配置的典型示例:

@Configuration @EnableWebSecurity public class HttpBasicAuthenticationAdapter extendsWebSecurityConfigurerAdapter {@Autowiredpublic void configureGlobal(AuthenticationManagerBuilder auth)throws Exception {auth.inMemoryAuthentication().withUser("userId").password("passwd").authorities("ROLE_USER");}@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/securityNone").permitAll().anyRequest().authenticated().and().httpBasic().realmName("Your App");}}

您可以使用諸如and()類的聯接器方法來組合安全約束。 如果要關閉HTTP基本身份驗證,只需刪除對httpBasic()方法的調用即可。

順便說一句,HTTP基本身份驗證不是最安全的身份驗證方法,因為您知道可以通過攔截流量和使用Base64算法來解碼密碼,但是它可以滿足大多數常見需求(例如測試)。

有更好的方法可以在生產或真實世界的RESTful Web服務中執行身份驗證,例如摘要身份驗證。 我將在以后的文章中寫更多有關此的內容,但是如果您迫不及待,那么我建議您通過Eugen Paraschiv的Spring課程學習Spring Security MasterClass和REST 。

他分享了他在使用Spring Framework和Spring Security開發RESTful Web服務方面的實際工作經驗。

無論如何,這是一個很好的圖表,解釋了HTTP基本身份驗證的工作原理,是閱讀本文后記住此概念的一個很好的圖表:

這就是如何在Spring Security中啟用HTTP基本認證 。 您已經學習了XML和Java配置,以使用Spring安全性啟用Http基本認證。 就像我說的那樣,如果您正在使用Spring MVC開發RESTful Web服務,那么您需要了解如何通過使用Java代碼或XML配置來啟用HTTP基本身份驗證以及其工作方式。 即使不利于生產,它對于測試和質量檢查目的也非常有幫助。

您可能想探索的其他Spring Security文章和資源

學習Spring Security 4 Basic動手

學習Spring Security 4中級–動手

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

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

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

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

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

如何使用Spring Security進行基于角色的訪問控制

感謝您到目前為止閱讀本文,如果您喜歡本文以及我對如何在Spring Security中啟用HTTP基本身份驗證的解釋,請與您的朋友和同事分享。

翻譯自: https://www.javacodegeeks.com/2018/01/enable-http-basic-authentication-spring-security-using-java-xml-config.html

總結

以上是生活随笔為你收集整理的如何使用Java和XML Config在Spring Security中启用HTTP基本身份验证的全部內容,希望文章能夠幫你解決所遇到的問題。

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