Java源碼分析系列之HttpServletRequest源碼分析

 從源碼當中 咱們能夠 得知,HttpServletRequest其實 實際上 並 不是一個類,它只是一個標準,一個 接口而已,它的 父類是ServletRequest。html

認證方式

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,那麼 這幾種不一樣的認證有什麼區別呢?服務器

  下面 是一些 介紹 :oracle

  Basic:這種 狀況下 ,須要 用戶名和密碼 進行認證,用用戶 輸入的用戶名 和密碼 和 服務器上 的數據 中 的當前用戶的用戶名和 密碼 進行對比 。具體的流程以下圖所示 :ide

  1. 客戶端請求服務器的受保護的資源
  2. 服務器發一個 請求,去 客戶端 請求 username和password.
  3. 客戶端 發送 用戶名 和密碼給服務端
  4. 服務端返回相應的數據給 客戶端 

Diagram of four steps in HTTP basic authentication between
client and server

 

  這種 認證 方式並非安全的,客戶端發送的用戶名 和密碼 是 Base64形式 加密的文本,這種狀況的 用戶名和 密碼 是會被暴露 出來的,若是 有 人可以截獲用戶名和密碼 ,這是 很 容易被解碼的,固然 若是 使用 的是 SSL,HTTPS等 策略的話,會減小這種風險的發生率。加密

參考資料

相關文章
相關標籤/搜索