2011-03-28 55 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"; 
    } 
}