2011-03-28 82 views
3

道歉的形象是可怕的質量,但它顯示了我想要達到什麼樣的情景,並想知道最佳解決方案是什麼?WIF與多個STS的

WIF Scenario

我有一個測試項目設置,使用RP到一個單一的STS - 在正常工作時,RP被定向到STS批准,然後發送一個令牌回來,簡單。

但是,我想在我的RP上的下拉列表中選擇一個「模式」,並基於此模式,您將重新授權給其中一個STS提供商。顯然,我無法直接轉向STS,因此它必須是動態的,並且爲即時刪除了web.config設置,重新指示.NET項目自動放置在那裏。

任何人都可以提供指導嗎?

回答

4

聽起來你會受益於使用Windows Azure的AppFrabric訪問控制服務(ACS)。您希望避免將應用程序中的代碼與每個STS提供程序進行通信,並且ACS旨在解決該問題。我們的想法是,您可以根據需要爲ACS配置儘可能多的STS提供程序,然後您的應用程序(使用WIF)僅與ACS進行通信以執行授權。

瞭解更多關於在這裏(在左側點擊「訪問控制」):http://www.microsoft.com/windowsazure/AppFabric/Overview/default.aspx

+0

非常好,謝謝。 – 2011-03-28 16:28:17

+0

是否可以在Azure之外使用ACS?或@thedixon:你打算在Azure上部署嗎?如果兩個答案都是「否」,那麼我不明白這個答案是如何回答這個問題的。我錯過了什麼? – 2011-03-28 16:34:18

+0

ACS在Azure中託管時,使用/消費ACS的應用程序可以在任何地方託管。 – 2011-03-28 16:37:55

1

你也可以使用ADFS 2.0版做到這一點。任何其他與ADFS聯合的STS都將顯示在「Home Realm Discovery」下拉列表中。

AppFabric ACS是雲中的「本質上」ADFS,沒有什麼能夠阻止您聯合ADFS和ACS。

4

這就是你要做的。在Global.asax中,添加以下代碼

void WSFederationAuthenticationModule_RedirectingToIdentityProvider(object sender, RedirectingToIdentityProviderEventArgs e) 
{ 
    string whr = HttpContext.Current.Request.QueryString["whr"]; 
    if (!string.IsNullOrEmpty(whr)) 
    { 
     //add your logic to determine the STS 
     e.SignInRequestMessage.HomeRealm = @"http://path-to-STS"; 
    } 
}