4

我有困難的Windows Server上設置了ID連接ADFS 2016ADFS + ID連接電子郵件要求和外部ADFS

我設置AD進行測試,我可以成功地驗證,但是該電子郵件要求是不在id令牌中。

此外,我已經在Claim Provider信任中設置了外部ADFS。它顯示爲一個選項,但是登錄後,我得到錯誤:

MSIS9642: The request cannot be completed because an id token is required but the server was unable to construct an id token for the current user. 

有人有關於如何解決這個問題的建議嗎?

回答

6

MSIS9642的根本原因在於ADFS 2016中新的OpenID Connect應用程序組功能需要向您的應用程序發出訪問令牌。該令牌必須包含用戶身份。爲了發佈令牌​​,子系統必須瞭解哪個要求入境索賠用於唯一標識的用戶。

稱爲的新屬性AnchorClaimType已添加到Claim Provider Trust模型中。

當ADFS首次安裝它註冊一個內置的聲明提供信託AD AUTHORITY並設置值AnchorClaimType

FOO://schemas.microsoft.com/ws/2008/06/identity /索賠/ windowsaccountname

您可以使用PowerShell命令得到-adfsclaimsprovidertrust看到這一點。

這就是OpenID針對Active Directory進行身份驗證時工作的原因。

當您創建新的Claim Provider Trust時,系統不會設置AnchorClaimType。 OpenID系統不能發出令牌,因爲它不知道哪個入站聲明構成了唯一的用戶身份。這就是爲什麼在對外部Claim Provider信任進行身份驗證時OpenID不起作用的原因。

爲了解決這個問題,你需要採取一些措施:

一)驗證您正在運行的Windows Server 2016 RTM不幸的是,PowerShell的屬性來設置AnchorClaimType並不在CTP存在,該屬性不能使用UI進行設置。

b)從代表用戶身份的入站令牌中選擇一項聲明,並標識聲明類型。在我們的情況下,我們正在聯合Azure Active Directory並選擇名稱,類型爲foo://schemas.xmlsoap。組織/ WS/2005/05 /同一性/權利要求/ 名稱

c)設置的AnchorTypeClaim用於聲明提供信託通過使用的powershell

設定adfsclaimsprovidertrust選擇的類型-targetidentifier 標識符 -AnchorClaimType http://schemas.xmlsoap.org/ws/2005/05/identity/claims/名稱

(從得到的powershell-adfsclaimsprovidertrust得到標識符

d)至少創建一個入站規則,通過對主輸入聲明的價值,在我們的案例名稱

希望這有助於

+0

我不得不使用FOO ://而不是http://內容被解釋爲鏈接... –

0

要與丟失AnchorClaimType參數附加解決問題可以使用Windows Server 2016 TP5(直到支持結束時)添加聲明提供程序信任(CPT)解決方法

解決方法:

  1. 如果CPT已經存在,刪除CPT。
  2. 使用PowerShell命令添加-AdfsClaimsProviderTrust
    • 任一個參數明智的(見Technet Description
    • 或使用元數據網址+參數-AnchorClaimType 「yourAnchorClaimValue」。
  3. 創建穿過用於主輸入權利要求

在我的情況的值以下PS命令解決了這個問題的至少一個入站規則:

[String]$ClaimProviderTrustName = "YourCPTName" 
[String]$MetaDataURL = "https://..." 
[String]$AnchorClaimType = "YourAnchorClaimValue" 
Add-AdfsClaimsProviderTrust -Name $ClaimProviderTrustName -MetadataUrl $MetaDataURL -AnchorClaimType $AnchorClaimType