1. 程式人生 > >HTTP基本認證(Basic Authentication)的JAVA示例

HTTP基本認證(Basic Authentication)的JAVA示例

大家在登入網站的時候,大部分時候是通過一個表單提交登入資訊。
但是有時候瀏覽器會彈出一個登入驗證的對話方塊,如下圖,這就是使用HTTP基本認證。

下面來看看一看這個認證的工作過程:
第一步:  客戶端傳送http request 給伺服器,伺服器驗證該使用者是否已經登入驗證過了,如果沒有的話,
伺服器會返回一個401 Unauthozied給客戶端,並且在Response 的 header "WWW-Authenticate" 中新增資訊。
如下圖。

第二步:瀏覽器在接受到401 Unauthozied後,會彈出登入驗證的對話方塊。使用者輸入使用者名稱和密碼後,
瀏覽器用BASE64編碼後,放在Authorization header中傳送給伺服器。如下圖:

第三步: 伺服器將Authorization header中的使用者名稱密碼取出,進行驗證, 如果驗證通過,將根據請求,傳送資源給客戶端。

下面來看一個JAVA的示例程式碼:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sun.misc.BASE64Decoder;

public class HTTPAuthServlet extends HttpServlet {
	
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
		String sessionAuth = (String) request.getSession().getAttribute("auth");

		if (sessionAuth != null) {
			System.out.println("this is next step");
			nextStep(request, response);

		} else {

			if(!checkHeaderAuth(request, response)){
				response.setStatus(401);
				response.setHeader("Cache-Control", "no-store");
				response.setDateHeader("Expires", 0);
				response.setHeader("WWW-authenticate", "Basic Realm=\"test\"");
			}			

		}

	}

	private boolean checkHeaderAuth(HttpServletRequest request, HttpServletResponse response) throws IOException {

		String auth = request.getHeader("Authorization");
		System.out.println("auth encoded in base64 is " + getFromBASE64(auth));
		
		if ((auth != null) && (auth.length() > 6)) {
			auth = auth.substring(6, auth.length());

			String decodedAuth = getFromBASE64(auth);
			System.out.println("auth decoded from base64 is " + decodedAuth);

			request.getSession().setAttribute("auth", decodedAuth);
			return true;
		}else{
			return false;
		}

	}

	private String getFromBASE64(String s) {
		if (s == null)
			return null;
		BASE64Decoder decoder = new BASE64Decoder();
		try {
			byte[] b = decoder.decodeBuffer(s);
			return new String(b);
		} catch (Exception e) {
			return null;
		}
	}

	public void nextStep(HttpServletRequest request, HttpServletResponse response) throws IOException {
		PrintWriter pw = response.getWriter();
		pw.println("<html> next step, authentication is : " + request.getSession().getAttribute("auth") + "<br>");
		pw.println("<br></html>");
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
		doGet(request, response);
	}

}
當request第一次到達伺服器時,伺服器沒有認證的資訊,伺服器會返回一個401 Unauthozied給客戶端。
認證之後將認證資訊放在session,以後在session有效期內就不用再認證了。

相關推薦

HTTP基本認證 Basic AuthenticationJAVA示例

                大家在登入網站的時候,大部分時候是通過一個表單提交登入資訊。但是有時候瀏覽器會彈出一個登入驗證的對話方塊,如下圖,這就是使用HTTP基本認證。下面來看看一看這個認證的工作過程:第一步:  客戶端傳送http request 給伺服器,伺服器驗證該使用者是否已經登入驗證過了,如果

HTTP基本認證(Basic Authentication)的JAVA示例

大家在登入網站的時候,大部分時候是通過一個表單提交登入資訊。但是有時候瀏覽器會彈出一個登入驗證的對話方塊,如下圖,這就是使用HTTP基本認證。下面來看看一看這個認證的工作過程:第一步:  客戶端傳送http request 給伺服器,伺服器驗證該使用者是否已經登入驗證過了,如

HTTP基本認證(Basic Authentication)的java呼叫示例

一、問題引入 大家在登入網站的時候,大部分時候是通過一個表單提交登入資訊。 但是有時候瀏覽器會彈出一個登入驗證的對話方塊,如下圖,這就是使用HTTP基本認證 這種認證的相關介紹在另一篇部落格中

HTTP基本認證(Basic Authentication) 實踐

服務端 nodejs var http = require('http') var server = http.createServer() server.listen(80, function

PHP 模擬 HTTP 基本認證Basic Authentication

當某個頁面需要認證才能進行訪問時,接到請求後伺服器端會在響應頭中傳送一個 WWW-Authenticate 首部(用來標識認證安全域),語法為 WWW-Authenticate:Basic relam=quoted-string 客戶端接收到後會彈出一個對話方塊,要求

[轉]asp.net權限認證HTTP基本認證http basic

border expr == gets tps ram word tro cred 本文轉自:http://www.cnblogs.com/lanxiaoke/p/6353955.html HTTP基本認證示意圖 HTTP基本認證,即http basic認證。 客

curl設定httpAuthentication實現http基本認證

curl --user name:password http://www.example.com 或者 curl -u name:password http://www.example.com 例: curl --user admin:111111 "http://192.

HTTP 驗證 Tomcat中進行基本驗證 (Basic Authentication) 和摘要驗證 (Digest Authentication)

HTTP 驗證HTTP 協議提供驗證機制來保護資源。當一個請求要求取得受保護的資源時,網頁伺服器迴應一個 401 Unauthorized error 錯誤碼。這個迴應包含一個指定了驗證方法和領域的 WWW-Authenticate 頭資訊。把這個領域想像成一個儲存著使用者名稱和密碼的資料庫,它將被用來標識

ASP.NET Web API(二):安全驗證之使用HTTP基本認證

在前一篇文章ASP.NET Web API(一):使用初探,GET和POST資料中,我們初步接觸了微軟的REST API: Web API。 我們在接觸了Web API的後就立馬發現了有安全驗證的需求,所以這篇文章我們先來討論下安全驗證一個最簡單的方法:使用HTTP基本

How to enable HTTP Basic Authentication in Spring Security using Java and XML Config

In the last article, I have shown you how to enable Spring security in Java application and today we'll talk about how to enable Basic HTTP authentication

訪問需要HTTP Basic Authentication認證的資源的各種語言的實現

無聊想呼叫下嘀咕的api的時候,發現需要HTTP Basic Authentication,就看了下。 在你訪問一個需要HTTP Basic Authentication的URL的時候,如果你沒有提供使用者名稱和密碼,伺服器就會返回401,如果你直接在瀏覽器中開啟,瀏

Apache Security-2-Basic Authentication(基本認證)簡介及實戰練習

1. 說明 本文系我的"Web Server & Web Technology (WSWT)系列部落格之一,主要講解Linux系統的Apache配置和使用,以及如何使用apache搭建自己的個人網站".該系列部落格的總目錄參見這裡http:/

HTTP Basic Authentication認證的資源的C#實現

要在傳送請求的時候新增HTTP Basic Authentication認證資訊到請求中,有兩種方法: 一是在請求頭中新增Authorization: Authorization: "Basic 使用者名稱和密碼的base64加密字串" 二是在url中新增使用者名稱和密碼:

HTTP Basic Authentication認證方式和AFNetworking的header的設定

第一:什麼是 HTTP Basic Authentication?        HTTP Basic Authentication 是一種用來允許Web瀏覽器或其他客戶端程式在請求時提供以使用者名稱

Go實戰--通過basic認證http(basic authentication)

生命不止, 繼續 go go go !!! 今天就跟大家介紹一下帶有basic認證的api。 何為basic authentication In the context of a HTTP transaction, basic access aut

HttpClient 三種 Http Basic Authentication 認證方式,你瞭解了嗎?

Http Basic 簡介 HTTP 提供一個用於許可權控制和認證的通用框架。最常用的 HTTP 認證方案是 HTTP Basic authentication。Http Basic 認證是一種用來允許網頁瀏覽器或其他客戶端程式在請求時提供使用者名稱和口令形式的身份憑證的一種登入驗證方式。 優點 基本認證的

CTF_WriteUp_HTTP基本認證Basic access authentication

## HTTP基本認證 在HTTP中,基本認證(英語:**Basic access authentication**)是允許http使用者代理(如:網頁瀏覽器)在請求時,提供使用者名稱和密碼 的一種方式。[HTTP基本認證](https://zh.wikipedia.org/wiki/HTTP基本認證/)

HTTP協議 (二) --基本認證

加密 摘要 ati http基本認證 識別 creat 方式 這樣的 cred HTTP協議 (二) 基本認證 http協議是無狀態的, 瀏覽器和web服務器之間可以通過cookie來身份識別。 桌面應用程序(比如新浪桌面客戶端, skydrive客戶端)跟Web服務器之間

newlisp HTTP Basic Authentication

sta style -m query duration article uil statistic visio HTTP Basic Authentication原來

Web驗證方式--Http Basic Authentication

分享 user omr figure org www gen 一起 host Http Basic Authentication是HTTP協議中定義的Web系統中的驗證方式。參考wiki 主要的實現機制如下: 1. 用戶通過瀏覽器匿名訪問web資源。 2. we