在 Active Directory 網域中使用 SPNEGO 來實作單一登入

系統提供「簡式且受保護的 GSS-API 協議 (SPNEGO)」機制,在 Active Directory 網域中實作單一登入

開始之前

這項作業需要網路中有下列元素:

下列程序包含基於下列設定的範例:
  • mycompany.com 是網域中所有主機使用的 TCP/IP 網域名稱。
  • ITDEV.COM 是 Active Directory 網域的名稱。
  • it_directory.mycompany.com 是其中執行目錄伺服器的主機。其也會執行 Kerberos KDC。
  • it_domain.mycompany.com 是其中執行 Active Directory 網域控制站的主機。
  • it_buildforge.mycompany.com 是其中安裝 Build Forge 的主機。
  • bfuser 是 Build Forge 系統的網域使用者名稱。
  • happy_user 是範例使用者的網域使用者名稱,該使用者會在 Web 瀏覽器中使用 SSO 來存取 Build Forge。

關於這項作業

請執行下列作業,於 Active Directory 網域和 KDC 中實作 SPNEGO SSO。每一項都提供了一個含有詳細程序的區段。
註: SPNEGO 攔截程式可以搭配 Active Directory 以外的 KDC 使用。

程序

  1. 設定 Active Directory 使用者和服務主體。
  2. 設定 Kerberos 檔。
  3. 配置 Build Forge 來使用 Active Directory 和 SPNEGO。
  4. 配置瀏覽器用戶端以進行安全存取。
  5. 透過 SSO 存取 Build Forge。

設定 Active Directory 使用者和服務主體

Build Forge 伺服器和 Build Forge 用戶端必須設定在 Active Directory 網域中。

開始之前

下列程序需要有 Windows 2003 SP2 的「支援工具」。其包含 setspn 指令,需要有這個指令才能在 Active Directory 中設定服務主體。請從 Windows Server 2003 產品 CD 或「Microsoft 下載中心」安裝「支援工具」。

關於這項作業

當 Build Forge 用戶端和伺服器位於 Active Directory 網域時,使用者會在登入 Windows 主機時產生 Kerberos 認證記號。接著當使用者嘗試存取 Build Forge 伺服器時,SPNEGO 攔截程式會接收使用者記號並加以驗證。驗證過的身分會傳給 Build Forge,透過已配置的 Microsoft Active Directory LDAP 伺服器來執行登入。

程序

  1. 登入網域控制站主機。 範例中的主機為 it_example.mycompany.com
  2. 將 Build Forge 主機加入 Active Directory 網域(如果其還不是成員)。 在本例中,將主機 it_buildforge 加入 ITDEV.COM 網域中。該主機現在在網域中的完整名稱為:it_buildforge.ITDEV.COM
  3. 新增 Build Forge 使用者到 Active Directory 網域。 在本例中,建立使用者 bfuser
    重要:
    • 選取密碼永不到期。您可以選取其他密碼管理。不過,每次密碼到期時,您都需要為 Build Forge 伺服器輸入新密碼。
    • 帳戶標籤中,選取帳戶授信可供委派
  4. 如果不存在,請在 Microsoft Active Directory 中建立所有用戶端的使用者帳戶。 在本例中會建立一個使用者:happy_user
  5. 建立 Build Forge 的服務主體名稱 (SPN)。 在範例中,Active Directory 使用者 bfuser 與服務名稱 HTTP/it_buildforge.mycompany.com 相關聯,以建立 Build Forge 伺服器的 SPN it_buildforge
    setspn -A HTTP/it_buildforge.mycompany.com bfuser

    HTTP 是 Build Forge 服務的服務名稱。

設定 Kerberos 鑑別的檔案

您需要在 Build Forge 主機上設定啟動檔(Kerberos 用戶端配置檔)和 keytab 檔。

程序

  1. 在執行 Build Forge 的主機上設定啟動檔。
    • Windows 系統:
      • 命名 krb.ini 檔,並將它放在 C:\winnt 中。如果不存在,請建立 C:\winnt
      • default_keytab_name 設為 FILE:C:\winnt\krb5.keytab
    • UNIX 和 Linux 系統:
      • 命名 krb.conf 檔並將它放在 C:\winnt 中。
      default_keytab_name 設為 FILE:/etc/krb5.keytab

    下列範例檔是利用來自範例系統的網域和領域設定,針對 Windows 所設定的。

    [libdefaults]
    		default_realm = ITDEV.COM
    		default_keytab_name = FILE:C:\winnt\krb5.keytab
    		default_tkt_enctypes = rc4_hmac
    		default_tgs_enctypes = rc4_hmac
    #	kdc_default_options = 0x40800000
    		forwardable  = true
    		renewable  = true
    		noaddresses = true
    		clockskew  = 300
    [realms]
    		ITDEV.COM = {
    				kdc = it_directory.itdev.com:88
    				default_domain = mycompany.com
    [domain_realm]
    		.mycompany.com = ITDEV.COM
    註: 如果用戶端主機和 Build Forge 伺服器主機之間的時間偏差超過 300 秒,記號即無法運作。請將用戶端和伺服器主機上的時間、日期和時區,設定在偏差限制內。
  2. 設定 Kerberos keytab 檔。 當用戶端嘗試存取 Build Forge 伺服器 URL 時,Build Forge 伺服器會使用 keytab 檔來驗證 Kerberos 記號。請在「網域控制站」主機上使用 ktpass 指令來建立該檔案。ktpass 指令包含在必備的 Windows 資源工具集中。下例使用 Build Forge 服務的主體名稱,以及在實務範例中設定給 Build Forge 的 Active Directory 使用者名稱。請將 -pass Rat1onal 換成您自己的密碼。範例中顯示的換行是便於閱讀。請勿在 ktpass 指令中使用換行。
    ktpass -out C:\it_buildforge.keytab 
    -princ HTTP/it_buildforge.mycompany.com@ITDEV.COM
    -mapuser bfuser -mapop set
    -pass Rat1onal /crypto RC4-HMAC-NT /rndpass /ptype KRB5_NT_SRV_HST
    將 it_buildforge.keytab 重新命名為 krb5.keytab,並將它放在 Build Forge 主機上含有 Kerberos 啟動檔的目錄中。
    • Windows:C:\winnt\
    • UNIX 和 Linux:/etc

配置 Build Forge 來使用 Active Directory 和 SPNEGO

程序

  1. 在 Build Forge 中,設定 LDAP 以指向 Active Directory 網域控制站。
    1. 在 Build Forge 中,按一下管理 > LDAP
    2. 建立新的 LDAP 配置並設定如下的內容,來設定網域控制站的存取。
      • 名稱:設為 Active Directory 網域的名稱。在範例環境中,這會是 itdev
      • 管理 DN:設為網域中的管理者使用者。
      • 對映存取群組:否
      • 主機:設為網域控制站主機的 IP 位址。
      • 連結使用者帳戶:是
      • 通訊協定:LDAP
      • 顯示名稱:displayname
      • 識別名稱:distinguishedname
      • 群組名稱:memberof
      • 郵件名稱:displayname
      • 搜尋基準:on=users,do=domainname,do=domainextension。在範例環境中,這會是 on=users,do=itdev,do=.com
      • 唯一 ID:sAMAccountNames=%
    3. 按一下設為預設值 這項配置需要作為預設 LDAP 配置。
  2. 設定 SPNEGO 的 Build Forge 環境變數。
    1. 在 Build Forge 中,跳至環境 > SPNEGO SSO 的環境
    2. bf_spnego_service_name 設為 HTTP 這會符合服務主體名稱。
    3. bf_spnego_server_name 設為 it_buildforge.mycompany.com(Build Forge 伺服器主機的完整主機名稱)。 如果未設定這個變數,INetAddress API 會嘗試找出主機名稱。
    4. bf_spnego_realm 設為 ITDEV.COM(Kerberos 領域名稱)。 如果未設定這個變數,則會使用 Kerberos 啟動檔中的值。
  3. 啟用 SPNEGO 攔截程式。
    1. 在 Build Forge 中,移至管理 > 安全 > SSO > SPNEGO SSO 攔截程式
    2. 將「作用中」內容設為「是」,然後按一下儲存
    3. 管理 > 安全 > SSO 中,將 SPNEGO SSO 攔截程式移至清單頂端。 使用「SPNEGO SSO 攔截程式」之「SSO 選項」功能表中的移至頂端選項,然後按一下儲存

配置 SSO 的用戶端瀏覽器

用戶端瀏覽器必須設定安全設定,才能使用 SPNEGO。

關於這項作業

請使用用來存取 Build Forge 之瀏覽器(可為 Microsoft Internet Explorer 或 Mozilla Firefox)的用戶端設定指示。

程序

透過 SSO 存取 Build Forge

輸入伺服器 URL 來測試透過 SSO 進行登入。

程序

  1. 利用 Active Directory 使用者清單中的使用者名稱,登入位於 Active Directory 網域的主機。
  2. 開啟瀏覽器。
  3. 輸入 Build Forge 伺服器主機的 URL。 使用範例配置時,這會是 http://it_buildforge.mycompany.com。如果 SSO 已正確配置,您會看到 Build Forge 管理主控台。
  4. 驗證 Build Forge 主控台右上方顯示的使用者名稱,是否符合用戶端的 Windows 登入名稱。

意見