2012-07-23 19 views
2

我們的連鎖雲:獲取ADFS從廣告中宣稱,當用戶通過Azure的ACS登錄

ASP.NET應用程序與WIF - > ADFS - >也許Azure的ACS - > Facebook,谷歌等

我們讓用戶在AD中配置角色等。這些用戶可以通過ADFS登錄AD,並按照正常方式獲取其角色。

(可選)它們可以登錄到其中一個ACS提供程序,並且我們有一個用例將ACS提供程序的唯一ID存儲在AD中。如果他們使用多個供應商,我們有多個映射。

因此,我們可以將通過ACS登錄的用戶映射到他們在AD中的「真實」身份。

我們正在努力的是如何向通過ACS登錄的用戶提供全套索賠?通常,您只需獲取姓名,電子郵件地址和唯一ID。

是否有聲明規則可以使用唯一ID搜索AD?這條規則必須確定他們使用哪個提供者才能在AD中使用正確的唯一ID。

我想我們可以從應用程序查詢AD,但這意味着我們必須將代碼添加到所有這些應用程序?

我們也可以在自定義STS中進行轉換嗎?

任何想法,良好的聯繫,文章等?

回答

0

你的情況可能有小的摩擦,如果你的鏈條看上去像這個:

ASP.NET應用程序與WIF - >天青ACS - >(ADFS或谷歌或Facebook)

這是一個可行的選擇?

當ADFS充當身份提供者而不是依賴方時,ACS與ADFS集成得最好。此外,一方面,ADFS會高興地聯合外部身份提供者授予對外部目錄用戶的訪問權限,但我認爲您不能使用ACS頒發的令牌讓ADFS通過其本地AD目錄對用戶進行身份驗證。

+0

是@andrew它是可行的 - 但更多的用戶痛苦(更多的HRD點擊)。我仍然不清楚這將如何幫助? – nzpcmad 2012-07-24 19:46:56

+0

另外 - 當我在評論的開頭添加ATandrew時,它就消失了。我怎麼做? – nzpcmad 2012-07-24 19:51:32

+0

@nzpcmad我想知道你會爲最初提議的鏈實現何種HRD體驗。我建議的版本將提供一個包含多個選項的HRD頁面,ADFS域名將作爲一個選項與谷歌,臉譜等一起列出。 – 2012-07-24 22:00:56

0

您可以通過在ACS的聲明提供程序信任中使用聲明規則語言在ADFS中創建自定義規則來實現此目的(有關某些語言文檔,請參閱herehere)。

但我不確定您是否可以立即使用唯一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中的規則順序很重要,第一條規則中創建的聲明可用於以下規則等等,這就是使這成爲可能的原因。

編輯:沒看到這個問題一年前問過...希望這個答案對別人有幫助。

相關問題