Windows-Server-2008

具有兩個或多個域的 ADFS 2.0 + ASP.NET 開發環境中的證書錯誤

  • August 14, 2015

我正在嘗試建立一個聲明感知的 Web 應用程序開發環境。我是 ADFS 2.0 的新手,最終,我希望能夠針對兩個不同的域進行身份驗證。我認為我非常接近,但我從 ADFS 伺服器之一收到證書錯誤。

在處理聯合服務配置期間,發現元素“serviceIdentityToken”包含無效數據。無法訪問已配置證書的私鑰。

在我在 Web 應用程序中輸入憑據後,此錯誤會記錄在域 #1 上的 ADFS 伺服器事件日誌中。即使有工作憑據,我也會被傳遞到 401 未經授權的訪問頁面。

執行 ADFS 服務的使用者帳戶有權訪問證書的私鑰,因此我不確定為什麼會收到此錯誤。

到目前為止我做了什麼:

  1. 在域 #1 上創建伺服器並安裝 ADFS 2.0
  2. 在域 #2 上創建伺服器並安裝 ADFS 2.0
  3. 在域 #1 上使用 VS 2010 創建了第三個開發伺服器
  4. 在開發伺服器上建構一個簡單的應用程序並使其具有聯邦意識(根據http://msdn.microsoft.com/en-us/library/bb897402.aspx);在 web.config 中,聯合伺服器設置為域 #1 上的伺服器

我也沒有在任何一個 ADFS 伺服器上設置依賴方信任。這是必要的嗎?我似乎找不到任何好的文件來解釋這應該如何工作。

我遵循了這個(http://blogs.msdn.com/b/alextch/archive/2011/06/27/building-a-test-claims-aware-asp-net-application-and-integrating-it-with -adfs-2-0-security-token-service-sts.aspx)指導進行設置,但我覺得我可能在某個地方錯過了一個簡單的步驟。

總結一下:

  1. 為什麼我會收到上面的證書錯誤?
  2. 我是否錯過了設置 ADFS 以便我可以針對兩個域進行身份驗證的任何步驟?(我可能錯過了將兩個 ADFS 伺服器連結在一起的步驟)

提前感謝您對此的任何幫助。熟悉 ADFS 的人可能會在幾分鐘內完成設置!

看起來您正在嘗試做的是讓開發伺服器與來自域 1 的 adfs 聯合,然後讓來自域 1 的 adfs 使用聲明提供者信任來接受來自域 2 中的 adfs 的令牌。這樣,如果正確配置了聲明規則,來自域 1 和域 2 的使用者將能夠登錄並訪問開發伺服器的應用程序。

因此,第二個問題的答案是在 domain1 中的 adfs 上配置聲明提供程序信任以指向域 2 中的 adfs,並聲明規則以轉換/傳遞從 domain1 中的 adfs 接收的聲明。然後,域 2 中的 adfs 還需要配置一個依賴方信任以指向 adfs 1,您可以在其中選擇要收集和發送的聲明。

至於問題1,看起來 adfs 中服務通信證書的私鑰肯定無法訪問。如果您將 adfs 安裝為場,您將擁有一個基於域的服務帳戶。如果您將其建構為獨立的 adfs,它將使用內置的網路服務帳戶。此選擇決定了您如何配置證書的權限。

您提到了 adfs 角色和 adfs 2.0,所以我不確定您是在兩台伺服器上使用 adfs 2 還是 Windows 2008/R2 附帶的內置角色。請澄清。

這些分步指南應該會有所幫助。

http://technet.microsoft.com/en-us/library/adfs2-federation-wif-application-step-by-step-guide(v=ws.10).aspx

有關 adfs 的所有內容,請參閱

http://social.technet.microsoft.com/wiki/contents/articles/2735.ad-fs-2-0-content-map.aspx

引用自:https://serverfault.com/questions/390519