您可以通過在ACS的聲明提供程序信任中使用聲明規則語言在ADFS中創建自定義規則來實現此目的(有關某些語言文檔,請參閱here和here)。
但我不確定您是否可以立即使用唯一ID搜索AD,因爲用於查詢AD的參數類型未在Claim Rule Language中指定。規則模板使用Windows帳戶名稱(佈局:DOMAIN\USERNAME
)進行搜索,因此我建議使用(自定義)屬性存儲而不是AD本身,並將唯一ID映射到Windows帳戶名稱。
假設您設置了屬性存儲區,則可以創建自定義規則來設置Windows帳戶名稱聲明並使您能夠使用ADFS的模板規則查詢AD。
自定義的規則將是這個樣子:
c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"]
=> add(store = "YourAttributeStore",
types = ("http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"),
query = "{0}", param = c.Value);
要真正使您還需要設置新生成的要求發行人的模板規則,因爲他們檢查它是否來自「AD權威」 。我不知道這是否合法,但爲了方便,我這樣做。這就需要第二個規則,這將是這個樣子:
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
=> issue(Issuer = "AD AUTHORITY", OriginalIssuer = "AD AUTHORITY",
Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname",
Value = c.Value);
對於不同的唯一ID供應商的區別,這是你的選擇如何處理它。您可以爲每個提供程序創建一個自定義規則,讓屬性存儲進行區分或對屬性存儲進行通用查詢。索賠規則語言的文件應該在這裏幫助你。
注意:這似乎是ADFS/WIF /基於聲明的身份書籍中通常避免的主題。這是我個人的解決方案,這可能不是最佳實踐,這只是我想出的最方便的方法。如果有人知道這個特定主題的報道:請分享。
另請注意:ADFS中的規則順序很重要,第一條規則中創建的聲明可用於以下規則等等,這就是使這成爲可能的原因。
編輯:沒看到這個問題一年前問過...希望這個答案對別人有幫助。
是@andrew它是可行的 - 但更多的用戶痛苦(更多的HRD點擊)。我仍然不清楚這將如何幫助? – nzpcmad 2012-07-24 19:46:56
另外 - 當我在評論的開頭添加ATandrew時,它就消失了。我怎麼做? – nzpcmad 2012-07-24 19:51:32
@nzpcmad我想知道你會爲最初提議的鏈實現何種HRD體驗。我建議的版本將提供一個包含多個選項的HRD頁面,ADFS域名將作爲一個選項與谷歌,臉譜等一起列出。 – 2012-07-24 22:00:56