1. 程式人生 > >Java原始碼分析系列之HttpServletRequest原始碼分析

Java原始碼分析系列之HttpServletRequest原始碼分析

從原始碼當中 我們可以 得知,HttpServletRequest其實 實際上 並 不是一個類,它只是一個標準,一個 介面而已,它的 父類是ServletRequest。

        public interface HttpServletRequest extends ServletRequest 

從閱讀原始碼 當中 ,我們 可以 獲得 如下認證資訊:

    
    /**
        * String identifier for Basic authentication. Value "BASIC"
        */
        public static final
String BASIC_AUTH = "BASIC"; /** * String identifier for Form authentication. Value "FORM" */ public static final String FORM_AUTH = "FORM"; /** * String identifier for Client Certificate authentication. Value "CLIENT_CERT" */ public static
final String CLIENT_CERT_AUTH = "CLIENT_CERT"; /** * String identifier for Digest authentication. Value "DIGEST" */ public static final String DIGEST_AUTH = "DIGEST";

分別是 BASIC,FORM,CLIENT_CERT,DIGEST,那麼 這幾種不同的認證有什麼區別呢?

下面 是一些 介紹 :

Basic:這種 情況下 ,需要 使用者名稱和密碼 進行認證,用使用者 輸入的使用者名稱 和密碼 和 伺服器上 的資料 中 的當前使用者的使用者名稱和 密碼 進行對比 。具體的流程如下圖所示 :

1、客戶端請求伺服器的受保護的資源
2、伺服器發一個 請求,去 客戶端 請求 username和password.
3、客戶端 傳送 使用者名稱 和密碼給服務端
4、服務端返回相應的資料給 客戶端
在這裡插入圖片描述
這種 認證 方式並不是安全的,客戶端傳送的使用者名稱 和密碼 是 Base64形式 加密的文字,這種情況的 使用者名稱和 密碼 是會被暴露 出來的,如果 有 人能夠截獲使用者名稱和密碼 ,這是 很 容易被解碼的,當然 如果 使用 的是 SSL,HTTPS等 策略的話,會減少這種風險的發生率。