【问题标题】:WIF with multiple STS's具有多个 STS 的 WIF
【发布时间】:2011-08-07 05:45:58
【问题描述】:

抱歉,图片质量很差,但它显示了我正在努力实现的目标,并想知道最好的解决方案是什么?

我有一个测试项目设置,将 RP 用于单个 STS - 在其中工作正常,RP 被定向到 STS 进行批准,然后发回一个令牌,很简单。

但是,我想在我的 RP 上创建一个下拉列表,让您选择一种“模式”,并根据此模式将您重定向到授权给 STS 提供商之一。显然,我不能为此直接重定向到 STS,因此它必须是动态的,并且为即时重定向而删除的 web.config 设置会被 .NET 项目自动放置在那里。

谁能提供这方面的指导?

【问题讨论】:

    标签: c# .net asp.net wif


    【解决方案1】:

    听起来您将从使用 Windows Azure 的 AppFrabric 访问控制服务 (ACS) 中受益。您希望避免将代码放入您的应用程序以与每个 STS 提供商进行通信,而 ACS 旨在解决该问题。这个想法是,您可以根据需要为 ACS 配置尽可能多的 STS 提供程序,然后您的应用程序(使用 WIF)仅与 ACS 通信以执行授权。

    在此处了解更多信息(点击左侧的“访问控制”):http://www.microsoft.com/windowsazure/AppFabric/Overview/default.aspx

    【讨论】:

    • 是否可以在 Azure 之外使用 ACS?或者@thedixon:你打算在 Azure 上部署吗?如果两个答案都是“否”,那么我看不出这个答案如何回答这个问题。我错过了什么?
    • 虽然 ACS 托管在 Azure 中,但使用/使用 ACS 的应用程序可以托管在任何地方。
    【解决方案2】:

    这就是你要做的。在 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";
        }
    }
    

    【讨论】:

      【解决方案3】:

      您也可以使用 ADFS v2.0 来完成此操作。与 ADFS 联合的任何其他 STS 都将显示在“Home Realm Discovery”下拉列表中。

      AppFabric ACS “本质上”是云中的 ADFS,没有什么能阻止您联合 ADFS 和 ACS。

      【讨论】:

        【解决方案4】:

        “RedirectingToIdentityProvider”覆盖正是我会做的。

        只需在此处发布此链接,您就可以在此处找到 IdentityFederationSamples 的集合,如果这有助于获得完整的解决方案。有一个示例用于重定向到两个 STS 之一,还有另一个显示链接 STS。 http://www.michelelerouxbustamante.com/post/Cloud-Connections-Las-Vegas-Links.aspx

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-04-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多