欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JAVA中HTTP基本認證(Basic Authentication)實現(xiàn)

 更新時間:2024年07月15日 10:04:42   作者:sayyy  
HTTP 基本認證是一種簡單的認證方法,本文主要介紹了JAVA中HTTP基本認證(Basic Authentication),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

什么是 HTTP 基本認證

HTTP 基本認證是一種簡單的認證方法。客戶端可以通過用戶名和密碼進行認證。這些憑證以特定的格式在 Authorization HTTP Header 中發(fā)送。一般它以 Basic 關(guān)鍵字開始,后面是一個 base64 編碼的用戶名:密碼值。冒號字符在這里很重要。頭部應(yīng)該嚴格遵循這個格式。

例如,要用 javanorth 用戶名和 http 密碼進行認證,我們必須發(fā)送這個 Header。

Basic amF2YW5vcnRoOmh0dHA=

我們可以通過使用 base64 解碼器和檢查解碼的結(jié)果來驗證。

服務(wù)端這么做

  • 服務(wù)端告知客戶端使用 Basic Authentication 方式進行認證
  • 服務(wù)端接收并處理客戶端按照 Basic Authentication 方式發(fā)送的數(shù)據(jù)

服務(wù)端告知客戶端使用 Basic Authentication 方式進行認證

  • 服務(wù)端返回 401(Unauthozied)狀態(tài)碼給客戶端
  • 服務(wù)端在Response 的 header “WWW-Authenticate” 中添加信息

在這里插入圖片描述

服務(wù)端接收并處理客戶端按照 Basic Authentication 方式發(fā)送的數(shù)據(jù)

private boolean checkBasicAuthorization(HttpServletRequest request) {
	String rawStringAuthorization = request.getHeader("Authorization");
	Assert.isTrue(StringUtils.startsWith(rawStringAuthorization, "Basic"), "Basic 認證失敗");
	String base64StringAuthorization = StringUtils.replaceOnce(rawStringAuthorization, "Basic", "");
	base64StringAuthorization = StringUtils.trim(base64StringAuthorization);
	
	byte[] bytesAuthorization = Base64Utils.decodeFromString(base64StringAuthorization);
	String stringAuthorization = new String(bytesAuthorization);
	
	String[] arrUserAndPass = StringUtils.split(stringAuthorization, ":");
	Assert.isTrue(2==arrUserAndPass.length, "Basic 認證失敗");
	
	String username = arrUserAndPass[0];
	String password = arrUserAndPass[1];
	
	if (StringUtils.equals(username, "myuser") && StringUtils.equals(password, "mypassword")) {
		return true;
	}
	
	return false;
}
  • org.apache.commons.lang3.StringUtils
  • org.springframework.util.Base64Utils

客戶端這么做

客戶端按照 Basic Authentication 方式向服務(wù)端發(fā)送數(shù)據(jù)

如果客戶端是瀏覽器

瀏覽器支持 Basic Authentication 方式認證。瀏覽器會自動彈出提示窗體,并自動向該地址發(fā)送認證請求。

瀏覽器自動彈出的對話框:

在這里插入圖片描述

點擊“登錄”后,瀏覽器自動向該地址發(fā)送請求:

在這里插入圖片描述

  • 輸入用戶名:myuser,密碼:mypassword
  • “bXl1c2VyOm15cGFzc3dvcmQ=” = base64("myuser:mypassword")

如果客戶端是 RestTemplat

@Configuration
public class RestTemplateConfig {
	@Bean
	public RestTemplate restTemplate() {
		RestTemplate restTemplate = new RestTemplate();
		restTemplate.getInterceptors()
			.add(new BasicAuthenticationInterceptor("myuser","mypassword")); 
;
		
		return restTemplate;
	}
}

如果客戶端是 HttpClient

其它

Basic Authentication 方式的認證,通常不需要登錄頁面,只需要登錄Action即可。

在這里插入圖片描述

參考

https://developer.atlassian.com/server/jira/platform/basic-authentication/

到此這篇關(guān)于JAVA中HTTP基本認證(Basic Authentication)的文章就介紹到這了,更多相關(guān)JAVA HTTP基本認證內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java Condition類案例詳解

    Java Condition類案例詳解

    這篇文章主要介紹了Java Condition類案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • 如何使用HttpClient發(fā)送java對象到服務(wù)器

    如何使用HttpClient發(fā)送java對象到服務(wù)器

    這篇文章主要介紹了如何使用HttpClient發(fā)送java對象到服務(wù)器,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • 詳解IntelliJ IDEA2020.1和JDK14體驗

    詳解IntelliJ IDEA2020.1和JDK14體驗

    這篇文章主要介紹了詳解IntelliJ IDEA2020.1和JDK14體驗,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Java使用線程池的優(yōu)勢有哪些

    Java使用線程池的優(yōu)勢有哪些

    這篇文章主要介紹了Java使用線程池的優(yōu)勢有哪些,幫助大家更好的理解和掌握java池化技術(shù),感興趣的朋友可以了解下
    2020-09-09
  • Java實現(xiàn)撲克牌洗牌和發(fā)牌

    Java實現(xiàn)撲克牌洗牌和發(fā)牌

    這篇文章主要為大家詳細介紹了Java實現(xiàn)撲克牌洗牌和發(fā)牌,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Java 將字符串動態(tài)生成字節(jié)碼的實現(xiàn)方法

    Java 將字符串動態(tài)生成字節(jié)碼的實現(xiàn)方法

    本篇文章主要是對Java將字符串動態(tài)生成字節(jié)碼的實現(xiàn)方法進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • Java線程的基本概念

    Java線程的基本概念

    本文主要介紹了Java線程的基本概念。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • java實現(xiàn)在SSM下使用支付寶掃碼支付功能

    java實現(xiàn)在SSM下使用支付寶掃碼支付功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)在SSM下使用支付寶掃碼支付功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • MyBatis?typeHandler接口的定義和使用

    MyBatis?typeHandler接口的定義和使用

    TypeHandler被稱作類型處理器,MyBatis在設(shè)置預(yù)處理語句中的參數(shù)或從結(jié)果集中取出一個值時,都會用類型處理器將Java對象轉(zhuǎn)化為數(shù)據(jù)庫支持的類型或者將獲取到數(shù)據(jù)庫值以合適的方式轉(zhuǎn)換成Java類型,感興趣的同學(xué)可以參考下文
    2023-05-05
  • JDK1.8中ConcurrentHashMap中computeIfAbsent死循環(huán)bug問題

    JDK1.8中ConcurrentHashMap中computeIfAbsent死循環(huán)bug問題

    這篇文章主要介紹了JDK1.8中ConcurrentHashMap中computeIfAbsent死循環(huán)bug,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08

最新評論