道歉的形象是可怕的质量,但它显示了我想要达到什么样的情景,并想知道最佳解决方案是什么?WIF与多个STS的
我有一个测试项目设置,使用RP到一个单一的STS - 在正常工作时,RP被定向到STS批准,然后发送一个令牌回来,简单。
但是,我想在我的RP上的下拉列表中选择一个“模式”,并基于此模式,您将重新授权给其中一个STS提供商。显然,我无法直接转向STS,因此它必须是动态的,并且为即时删除了web.config设置,重新指示.NET项目自动放置在那里。
任何人都可以提供指导吗?
道歉的形象是可怕的质量,但它显示了我想要达到什么样的情景,并想知道最佳解决方案是什么?WIF与多个STS的
我有一个测试项目设置,使用RP到一个单一的STS - 在正常工作时,RP被定向到STS批准,然后发送一个令牌回来,简单。
但是,我想在我的RP上的下拉列表中选择一个“模式”,并基于此模式,您将重新授权给其中一个STS提供商。显然,我无法直接转向STS,因此它必须是动态的,并且为即时删除了web.config设置,重新指示.NET项目自动放置在那里。
任何人都可以提供指导吗?
听起来你会受益于使用Windows Azure的AppFrabric访问控制服务(ACS)。您希望避免将应用程序中的代码与每个STS提供程序进行通信,并且ACS旨在解决该问题。我们的想法是,您可以根据需要为ACS配置尽可能多的STS提供程序,然后您的应用程序(使用WIF)仅与ACS进行通信以执行授权。
了解更多关于在这里(在左侧点击“访问控制”):http://www.microsoft.com/windowsazure/AppFabric/Overview/default.aspx
你也可以使用ADFS 2.0版做到这一点。任何其他与ADFS联合的STS都将显示在“Home Realm Discovery”下拉列表中。
AppFabric ACS是云中的“本质上”ADFS,没有什么能够阻止您联合ADFS和ACS。
这就是你要做的。在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";
}
}
的“RedirectingToIdentityProvider”覆盖正是我会做的一样好。
只需在此发布此链接,您可以在此找到IdentityFederationSamples的集合,如果这有助于获得整个解决方案。有一个重定向到两个STS中的一个的样本,另一个显示链接STS。 http://www.michelelerouxbustamante.com/post/Cloud-Connections-Las-Vegas-Links.aspx
非常好,谢谢。 – 2011-03-28 16:28:17
是否可以在Azure之外使用ACS?或@thedixon:你打算在Azure上部署吗?如果两个答案都是“否”,那么我不明白这个答案是如何回答这个问题的。我错过了什么? – 2011-03-28 16:34:18
ACS在Azure中托管时,使用/消费ACS的应用程序可以在任何地方托管。 – 2011-03-28 16:37:55