在登入 Microsoft 365、Azure 或 Intune 期間,會重複提示同盟使用者輸入認證

重要事項

本文包含的信息說明如何協助降低安全性設定,或如何關閉計算機上的安全性功能。 您可以進行這些變更來解決特定問題。 進行這些變更之前,建議您評估與在特定環境中實作此因應措施相關聯的風險。 如果您實作此因應措施,請採取任何適當的額外步驟來協助保護計算機。

問題

當使用者在登入 Microsoft 365、Microsoft Azure 或 Microsoft Intune 等 Microsoft 雲端服務期間嘗試向 Active Directory 同盟服務 (AD FS) 服務端點進行驗證時,會重複提示同盟使用者輸入認證。 當使用者取消時,使用者會收到 拒絕存取 錯誤訊息。

原因

徵兆表示使用AD FS進行 Windows 整合式驗證時發生問題。 如果下列一或多個條件成立,就會發生此問題:

  • 使用了不正確的使用者名稱或密碼。

  • Internet Information Services (IIS) 驗證設定在 AD FS 中設定不正確。

  • 與用來執行 AD FS 同盟伺服器數位的服務帳戶相關聯的 SPN) 服務主體 (名稱會遺失或損毀。

    注意事項

    只有當 AD FS 實作為同盟伺服器數位且未在獨立組態中實作時,才會發生這種情況。

  • 下列一或多個專案是由驗證擴充保護識別為攔截式攻擊的來源:

    • 某些第三方因特網瀏覽器
    • 公司網路防火牆、網路負載平衡器或其他網路裝置正在將AD FS同盟服務發佈至因特網,因此可能會重寫IP承載數據。 這可能包含下列類型的數據:
      • 安全套接字層 (SSL) 橋接

      • SSL 卸除

      • 具狀態封包篩選

        如需更多資訊,請參閱以下 Microsoft 知識庫文章:

        2510193支援使用 AD FS 在 Microsoft 365、Azure 或 Intune 中設定單一登錄的案例

    • 用戶端電腦上已安裝或啟用監視或 SSL 解密應用程式
  • 功能變數名稱 系統 (DNS) AD FS 服務端點的解析是透過 CNAME 記錄查閱來執行,而不是透過 A 記錄查閱來執行。

  • Windows Internet Explorer 未設定為將 Windows 整合式驗證傳遞至 AD FS 伺服器。

開始進行疑難解答之前

檢查使用者名稱和密碼不是問題的原因。

  • 請確定已使用正確的用戶名稱,且為用戶主體名稱 (UPN) 格式。 例如,johnsmith@contoso.com。

  • 請確定已使用正確的密碼。 若要再次檢查是否使用正確的密碼,您可能必須重設用戶密碼。 如需詳細資訊,請參閱下列 Microsoft TechNet 文章:

    重設用戶密碼

  • 請確定帳戶未在指定的登入時數外鎖定、過期或使用。 如需詳細資訊,請參閱下列 Microsoft TechNet 文章: 管理使用者

確認原因

若要檢查 Kerberos 問題是否造成問題,請在 AD FS 同盟伺服器陣列上啟用表單型驗證,暫時略過 Kerberos 驗證。 如果要執行這項操作,請依照下列步驟執行:

步驟 1:編輯 AD FS 同盟伺服器陣列中每部伺服器上的 web.config 檔案

  1. 在 Windows 檔案總管中,找出 C:\inetpub\adfs\ls\ 資料夾,然後建立 web.config 檔案的備份複本。

  2. 依序按兩下 [開始]、 [所有程式]、[ 配件]、以滑鼠右鍵按兩下 [記事本],然後按兩下 [ 以系統管理員身分執行]

  3. 「檔案」功能表上按一下「開啟」。 在 [ 檔名] 方塊中,輸入 C:\inetpub\adfs\ls\web.config,然後按兩下 [ 開啟]

  4. 在 web.config 檔案中,遵循下列步驟:

    1. 找出包含 <驗證模式>的行,然後將它變更為 <驗證模式=“Forms”/>。

    2. 找出以 <localAuthenticationTypes> 開頭的區段,然後變更區段,<以便先列出 add name=“Forms”> 專案,如下所示:

      <localAuthenticationTypes>
      <add name="Forms" page="FormsSignIn.aspx" />
      <add name="Integrated" page="auth/integrated/" />
      <add name="TlsClient" page="auth/sslclient/" />
      <add name="Basic" page="auth/basic/" />
      
  5. 在 [ 檔案] 功能表上,按兩下 [ 儲存]

  6. 在提升許可權的命令提示字元中,使用 iisresetcommand 重新啟動 IIS。

步驟 2:測試 AD FS 功能

  1. 在連線並驗證至內部部署AD DS環境的用戶端電腦上,登入雲端服務入口網站。

    應該體驗窗體型登入,而不是順暢的驗證體驗。 如果使用表單型驗證成功登入,這會確認AD FS同盟服務中有 Kerberos 的問題。

  2. 先將AD FS 同盟伺服器數位中每部伺服器的組態還原為先前的驗證設定,再依照一節中的步驟操作。 若要還原 AD FS 同盟伺服器陣列中每部伺服器的設定,請遵循下列步驟:

    1. 在 Windows 檔案總管中,找出 C:\inetpub\adfs\ls\ 資料夾,然後刪除 web.config 檔案。
    2. Move the backup of the web.config file that you created in the "Step 1: Edit the web.config file on each server in the AD FS federation server farm" section to the C:\inetpub\adfs\ls\ folder.
  3. 在提升許可權的命令提示字元中,使用 iisresetcommand 重新啟動 IIS。

  4. 檢查 AD FS 驗證行為是否還原為原始問題。

解決方案

若要解決限制 AD FS 驗證的 Kerberos 問題,請視方式使用下列一或多個方法。

解決方法 1:將 AD FS 驗證設定重設為預設值

如果AD FS IIS 驗證設定不正確,或AD FS同盟服務和 Proxy 服務的 IIS 驗證設定不相符,其中一個解決方案是將所有 IIS 驗證設定重設為預設的 AD FS 設定。

下表列出預設的驗證設定。

虛擬應用程式 驗證層級 ()
默認網站/adfs 匿名驗證
默認網站/adfs/ls 匿名驗證,Windows 驗證

在每個 AD FS 同盟伺服器和每個 AD FS 同盟伺服器 Proxy 上,使用下列 Microsoft TechNet 文章中的資訊,將 AD FS IIS 虛擬應用程式重設為預設驗證設定:

在 IIS 7 中設定驗證

解決方案 2:更正 AD FS 同盟伺服器陣列 SPN

注意事項

只有在將AD FS 實作為同盟伺服器陣列時,才嘗試此解決方案。 請勿在AD FS 獨立設定中嘗試此解決方案。

若要解決 AD FS 服務的 SPN 在 AD FS 服務帳戶上遺失或損毀的問題,請在 AD FS 同盟伺服器數位的一部伺服器上遵循下列步驟:

  1. 開啟 [服務管理] 嵌入式管理單元。 若要這樣做,請依序按兩下 [ 開始]、[ 所有程式]、[ 系統管理工具] 及 [ 服務]

  2. 按兩下 [AD FS (2.0) Windows 服務]

  3. 在 [ 登入] 索 引標籤上,記下此帳戶中顯示的服務 帳戶

  4. 依序按兩下 [開始]、 [所有程式]、[ 配件]、以滑鼠右鍵按兩下 [命令提示字元],然後按兩下 [ 以系統管理員身分執行]

  5. 輸入下列命令,然後按下 Enter。

    SetSPN –f –q host/<AD FS service name>
    

    注意事項

    在此命令中, <AD FS 服務名稱> 代表完整功能變數名稱 (FQDN) AD FS 服務端點的服務名稱。 它不代表AD FS 伺服器的 Windows 主機名。

    • 如果針對命令傳回多個專案,且結果與步驟 3 中註明以外的使用者帳戶相關聯,請移除該關聯。 若要執行此動作,請執行下列命令:

      SetSPN –d host/<AD FS service name><bad_username>
      
    • 如果命令傳回多個專案,且SPN使用的名稱與Windows 中AD FS伺服器的電腦名稱相同,則AD FS的同盟端點名稱不正確。 必須再次實作AD FS。 AD FS 同盟伺服器陣列的 FQDN 不得與現有伺服器的 Windows 主機名相同。

    • 如果 SPN 不存在,請執行下列命令:

      SetSPN –a host/<AD FS service name><username of service account>  
      

      注意事項

      在此命令中, <服務帳戶> 的用戶名稱代表步驟 3 中記下的用戶名稱。

  6. 在AD FS 同盟伺服器陣列中的所有伺服器上執行這些步驟之後,以滑鼠右鍵按兩下 [服務管理] 嵌入式管理單元中的 [AD FS (2.0) Windows 服務 ],然後按兩下 [ 重新啟動]

解決方法 3:解決驗證考慮的擴充保護

若要解決驗證擴充保護無法成功驗證的問題,請使用下列其中一個建議的方法:

  • 方法 1:使用 Windows Internet Explorer 8 (或更新版本的程式) 登入。
  • 方法 2:以 SSL 橋接、SSL 卸除或具狀態封包篩選不會重寫 IP 承載數據的方式,將 AD FS 服務發佈至因特網。 此用途的最佳做法建議是使用AD FS Proxy 伺服器。
  • 方法 3:關閉或停用監視或 SSL 解密應用程式。

如果您無法使用上述任何方法,若要解決此問題,可以停用被動和主動客戶端的驗證擴充保護。

因應措施:停用驗證的擴充保護

警告

我們不建議您使用此程式作為長期解決方案。 停用驗證的擴充保護,會因為偵測到整合式 Windows 驗證端點上的特定攔截式攻擊而降低 AD FS 服務安全性配置檔。

注意事項

針對第三方應用程式功能套用此因應措施時,您也應該在用戶端操作系統上卸載 Hotfix,以進行驗證的擴充保護。

針對被動用戶端

若要停用被動客戶端的驗證擴充保護,請在 AD FS 同盟伺服器陣列中的所有伺服器上,針對下列 IIS 虛擬應用程式執行下列程式:

  • 默認網站/adfs
  • 默認網站/adfs/ls

如果要執行這項操作,請依照下列步驟執行:

  1. 開啟 IIS 管理員,並流覽至您想要管理的層級。 如需開啟 IIS 管理員的相關信息,請 參閱開啟 IIS 管理員 (IIS 7)
  2. 在 [功能檢視] 中,按兩下 [ 驗證]
  3. 在 [驗證] 頁面上,選取 [Windows 驗證]
  4. 在 [ 動作] 窗格中,按兩下 [ 進階設定]
  5. 當 [進階設定] 對話框出現時,請從 [擴充保護] 下拉功能表中選取 [關閉]。

針對作用中用戶端

若要停用作用中用戶端的驗證擴充保護,請在主要 AD FS 伺服器上執行下列程式:

  1. 開啟 [Windows PowerShell]。

  2. 執行下列命令以載入 AD FS 嵌入式管理單元的 Windows PowerShell:

    Add-PsSnapIn Microsoft.Adfs.Powershell
    
  3. 執行下列命令以停用驗證的擴充保護:

    Set-ADFSProperties –ExtendedProtectionTokenCheck "None"
    

重新啟用驗證的擴充保護

針對被動用戶端

若要重新啟用被動客戶端的驗證擴充保護,請針對 AD FS 同盟伺服器陣列中所有伺服器上的下列 IIS 虛擬應用程式執行下列程式:

  • 默認網站/adfs
  • 默認網站/adfs/ls

如果要執行這項操作,請依照下列步驟執行:

  1. 開啟 IIS 管理員,並流覽至您想要管理的層級。 如需開啟 IIS 管理員的相關信息,請 參閱開啟 IIS 管理員 (IIS 7)
  2. 在 [功能檢視] 中,按兩下 [ 驗證]
  3. 在 [驗證] 頁面上,選取 [Windows 驗證]
  4. 在 [ 動作] 窗格中,按兩下 [ 進階設定]
  5. 當 [進階設定] 對話框出現時,請從 [擴充保護] 下拉功能表中選取 [接受]。

針對作用中用戶端

若要重新啟用使用中用戶端的驗證擴充保護,請在主要 AD FS 伺服器上執行下列程式:

  1. 開啟 [Windows PowerShell]。

  2. 執行下列命令以載入 AD FS 嵌入式管理單元的 Windows PowerShell:

    Add-PsSnapIn Microsoft.Adfs.Powershell
    
  3. 執行下列命令以啟用驗證的擴充保護:

    Set-ADFSProperties –ExtendedProtectionTokenCheck "Allow"
    

解決方法 4:以 AD FS 的 A 記錄取代 CNAME 記錄

使用 DNS 管理工具,將用於同盟服務的每個 DNS 別名 (CNAME) 記錄取代為 DNS 位址 (A) 記錄。 此外,在實作分割大腦 DNS 組態時,請檢查或考慮公司 DNS 設定。 如需如何管理 DNS 記錄的詳細資訊,請 參閱管理 DNS 記錄

解決方案 5:將 Internet Explorer 設定為單一登錄 (SSO) 的 AD FS 用戶端

如需如何設定 Internet Explorer 以進行 AD FS 存取的詳細資訊,請參閱 意外提示同盟使用者輸入公司或學校帳戶認證

其他相關資訊

為了協助保護網路,AD FS 會使用驗證的擴充保護。 驗證的擴充保護可協助防止攻擊者攔截客戶端認證並將其轉送到伺服器的攔截式攻擊。 您可以使用通道系結工作 (CBT) 來防範這類攻擊。 當與用戶端建立通訊時,伺服器可以要求、允許或不需要 CBT。

ExtendedProtectionTokenCheck AD FS 設定會指定同盟伺服器所支持驗證的延伸保護層級。 以下是此設定的可用值:

  • 需要:伺服器已完全強化。 會強制執行擴充保護。
  • 允許:這是預設設定。 伺服器已部分強化。 已變更以支援這項功能的相關系統會強制執行擴充保護。
  • :伺服器容易受到攻擊。 不會強制執行擴充保護。

下表說明驗證如何針對三個操作系統和瀏覽器運作,視具有 IIS 的 AD FS 上可用的不同擴充保護選項而定。

注意事項

Windows 用戶端作業系統必須安裝特定更新,才能有效地使用擴充保護功能。 根據預設,這些功能會在AD FS 中啟用。

根據預設,Windows 7 包含適當的二進位檔以使用擴充保護。

Windows 7 (或適當更新版本的 Windows Vista 或 Windows XP)

設定 需要 允許 (預設)
Windows Communication Foundation (WCF) Client (所有端點) 工程 工程 工程
Internet Explorer 8 (含) 以後版本 工程 工程 工程
Firefox 3.6 失敗 失敗 工程
Safari 4.0.4 失敗 失敗 工程

沒有適當更新的 Windows Vista

設定 需要 允許 (預設)
WCF 用戶端 (所有端點) 失敗 工程 工程
Internet Explorer 8 (含) 以後版本 工程 工程 工程
Firefox 3.6 失敗 工程 工程
Safari 4.0.4 失敗 工程 工程

沒有適當更新的 Windows XP

設定 需要 允許 (預設)
Internet Explorer 8 (含) 以後版本 工程 工程 工程
Firefox 3.6 失敗 工程 工程
Safari 4.0.4 失敗 工程 工程

如需驗證擴充保護的詳細資訊,請參閱下列 Microsoft 資源:

設定 AD FS 2.0 的進階選項

如需 Set-ADFSProperties Cmdlet 的詳細資訊,請移至下列 Microsoft 網站:

Set-ADFSProperties

是否仍需要協助? 移至 Microsoft 社群Microsoft Entra 論壇網站。

本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。