JAVA中HTTP基本認證(Basic Authentication)實現(xiàn)
什么是 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)文章
如何使用HttpClient發(fā)送java對象到服務(wù)器
這篇文章主要介紹了如何使用HttpClient發(fā)送java對象到服務(wù)器,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11Java 將字符串動態(tài)生成字節(jié)碼的實現(xiàn)方法
本篇文章主要是對Java將字符串動態(tài)生成字節(jié)碼的實現(xiàn)方法進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01JDK1.8中ConcurrentHashMap中computeIfAbsent死循環(huán)bug問題
這篇文章主要介紹了JDK1.8中ConcurrentHashMap中computeIfAbsent死循環(huán)bug,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08