使用 SPNEGO Web 鑑別針對 HTTP 要求進行單一登入

對 WebSphere® Application Server 中的受保護資源發出 HTTP 要求時,您可以使用「簡易且受保護的 GSS-API 協議機制 (SPNEGO)」作為 WebSphere Application Server 的 Web 鑑別服務,來安全地協議和鑑別這些 HTTP 要求。

下列各節詳細說明 SPNEGO Web 鑑別:

何謂 SPNEGO?

SPNEGO 是簡易且受保護的 GSS-API 協議機制 (IETF RFC 2478) 中所定義的一項標準規格。

當啟用 Liberty 伺服器安全和 SPNEGO Web 鑑別時,在處理第一個入埠 HTTP 要求時,就會起始設定 SPNEGO。如果沒有指定鑑別過濾器,或者指定了鑑別過濾器並且符合準則時,SPNEGO 會負責鑑別對 HTTP 要求中所識別之受保護資源的存取權。

除了 WebSphere Application Server 安全執行時期服務,還需要一些外部元件,才能啟用 SPNEGO 作業。這些外部元件包括:
  • 適用於 Windows 平台具備 Active Directory 網域和相關聯「Kerberos 金鑰配送中心 (KDC)」的 Microsoft Windows Server。
  • 用戶端應用程式,例如 Microsoft .NET 或 Web 服務,以及支援 SPNEGO Web 鑑別機制(定義在 IETF RFC 2478 中)的 J2EE 用戶端。瀏覽器可以是 Microsoft Internet Explorer 和 Mozilla Firefox 等。任何使用的瀏覽器都必須配置成使用 SPNEGO Web 鑑別機制。

HTTP 要求的鑑別由使用者(用戶端)觸發,這會產生 SPNEGO 記號。WebSphere Application Server 收到這個記號。具體來說,SPNEGO Web 鑑別會解碼並擷取 SPNEGO 記號中的使用者身分。接著,使用這個身分來做出授權決策。

SPNEGO Web 鑑別是 WebSphere Application Server 中的伺服器端解決方案。用戶端應用程式負責產生 SPNEGO 記號,以供 SPNEGO Web 鑑別使用。 WebSphere Application Server 安全登錄中的使用者身分,必須與 SPNEGO Web 鑑別所擷取的身分相同。 當 Microsoft Windows Active Directory 伺服器是 WebSphere Application Server 中使用的「輕量型目錄存取通訊協定 (LDAP)」伺服器時,該身分完全相同。您可以使用自訂登入模組作為外掛程式,以支援 Active Directory 身分至 WebSphere Application Server 安全登錄的自訂對映。

WebSphere Application Server 會驗證身分是否符合其安全登錄。如果驗證成功,會擷取用戶端 GSS 委派認證,並放在用戶端主體中,且會建立「小型認證機構 (LTPA)」安全記號。接著,它會將 LTPA Cookie 放在 HTTP 回應中傳回給使用者。當相同的使用者後續發出 HTTP 要求,要求存取 WebSphere Application Server 中的其他受保護資源時,請使用先前建立的 LTPA 安全記號,以避免重複的登入盤查。

單一 Kerberos 網域範圍中的 SPNEGO Web 鑑別

單一 Kerberos 網域範圍(網域)中支援 SPNEGO Web 鑑別。下圖顯示盤查-回應信號交換程序:

圖 1. 單一 Kerberos 網域範圍中的 SPNEGO Web 鑑別

單一 Kerberos 網域範圍中支援 SPNEGO Web 鑑別。顯示盤查-回應信號交換程序。

在上圖中,發生了下列事件:

  1. 一開始,使用者從工作站登入 Microsoft 網域控制站 MYDOMAIN.EXAMPLE.COM
  2. 接著,使用者嘗試存取 Web 應用程式。使用者利用用戶端瀏覽器來要求受保護的 Web 資源,亦即,傳送了 HTTP GET 要求給 Liberty 伺服器。
  3. Liberty 伺服器中的 SPNEGO 鑑別對用戶端瀏覽器回以 HTTP 401 盤查標頭,其中含有 Authenticate: Negotiate 狀態。
  4. 由於用戶端瀏覽器是配置成支援整合 Windows 鑑別,用戶端瀏覽器會辨識該協議標頭。用戶端針對主機名稱剖析所要求的 URL。用戶端利用主機名稱組成 目標 Kerberos 服務主體名稱 (SPN) HTTP/myLibertyMachine.example.com,以便向 Microsoft Kerberos KDC (TGS_REQ) 中的 Kerberos 通行證授與服務 (TGS),要求 Kerberos 服務通行證。接著,TGS 簽發 Kerberos 服務通行證 (TGS_REP) 給用戶端。Kerberos 服務通行證(SPNEGO 記號)向服務(Liberty 伺服器) 證明使用者的身分及許可權兩者。
  5. 接著,用戶端瀏覽器利用先前步驟中在要求 HTTP 標頭中取得的 SPNEGO 記號,來回應 Liberty 伺服器的 Authenticate: Negotiate 盤查。
  6. Liberty 伺服器中的 SPNEGO 鑑別查看含有 SPNEGO 記號的 HTTP 標頭,驗證 SPNEGO 記號,並取得使用者的身分(主體)。
  7. 在 Liberty 伺服器取得使用者的身分之後,它會驗證其使用者登錄中的使用者,並執行授權檢查。
  8. 如果要授與存取權,Liberty 伺服器會傳送含有 HTTP 200 的回應。Liberty 伺服器也會在回應中包含 LTPA Cookie。這個 LTPA Cookie 將用於後續的要求。
註: 支援 SPNEGO 的其他用戶端(例如:Web 服務、.NET 和 J2EE)不必遵循先前所示的盤查-回應信號交換程序。那些用戶端可以取得授與通行證的通行證 (TGT) 和目標伺服器的 Kerberos 服務通行證,建立 SPNEGO 記號,將它插入 HTTP 標頭中,然後遵循一般程序來建立 HTTP 要求。

授信 Kerberos 網域範圍中的 SPNEGO Web 鑑別

授信 Kerberos 網域範圍中亦支援 SPNEGO Web 鑑別。下圖顯示盤查-回應信號交換程序:

圖 2. 授信 Kerberos 網域範圍中的 SPNEGO Web 鑑別

授信 Kerberos 網域範圍中亦支援 SPNEGO Web 鑑別。顯示盤查-回應信號交換程序。

在上圖中,發生了下列事件:

  1. 使用者登入 Microsoft 網域控制站 TRUSTEDREALM.ACME.COM
  2. 使用者從用戶端瀏覽器,要求 Liberty 伺服器上所管理的受保護 Web 資源,且該 Liberty 伺服器位於原始 Microsoft 網域控制站 MYDOMAIN.EXAMPLE.COM 中。
  3. Liberty 伺服器對用戶端瀏覽器回以 HTTP 401 盤查標頭,其中含有 Authenticate: Negotiate 狀態。
  4. 用戶端瀏覽器是配置成支援整合 Windows 鑑別。用戶端瀏覽器使用管理 Liberty 伺服器應用程式的工作站的主機名稱,來剖析 URL。用戶端瀏覽器使用主機名稱作為屬性,向網域範圍 TRUSTEDREALM.ACME.COM 要求 MYDOMAIN.EXAMPLE.COM Kerberos 跨網域範圍通行證 (TGS_REQ)。
  5. 用戶端瀏覽器使用步驟 4 中的 Kerberos 跨網域範圍通行證,向網域範圍 MYDOMAIN.EXAMPLE.COM 要求 Kerberos 服務通行證。Kerberos 服務通行證 (SPNEGO 記號)向服務(Liberty 伺服器)證明使用者的身分及許可權。
  6. 接著,用戶端瀏覽器利用先前步驟中在要求 HTTP 標頭中取得的 SPNEGO 記號,來回應 Liberty 伺服器的 Authenticate: Negotiate 盤查。
  7. Liberty 伺服器收到要求,並檢查含有 SPNEGO 記號的 HTTP 標頭。然後它擷取 Kerberos 服務通行證,驗證通行證,並取得使用者的身分(主體)。
  8. 在 Liberty 伺服器取得使用者的身分之後,它會驗證其使用者登錄中的使用者,並執行授權檢查。
  9. 如果要授與存取權,Liberty 伺服器會傳送含有 HTTP 200 的回應。Liberty 伺服器也會在回應中包含 LTPA Cookie。這個 LTPA Cookie 將用於後續的要求。
註: 不需要修改 Liberty 伺服器,就能支援更多的授信網域範圍。要讓 SPNEGO 與授信網域範圍搭配運作,唯一的需求是必要 Active Directory 網域範圍之間存在信任關係。

在授信 Kerberos 網域範圍環境中,必須在每一個 Kerberos KDC 上完成 Kerberos 授信網域範圍的設定。如需如何設定 Kerberos 授信網域範圍的相關資訊,請參閱您的「Kerberos 管理者與使用者手冊」。

瀏覽器用戶端 SPNEGO Web 鑑別的支援資訊

支援下列實務:
  • 跨樹系信任
  • 相同樹系內的網域信任
  • Kerberos 網域範圍信任
不支援下列實務:
  • 樹系外部信任
  • 網域外部信任

如需在 Liberty 伺服器上配置 SPNEGO 的進一步資訊,請參閱在 Liberty 中配置 SPNEGO 鑑別


指示主題類型的圖示 概念主題



「時間戳記」圖示 前次更新: 2016 年 11 月 30 日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwlp_spnego
檔名:cwlp_spnego.html