【问题标题】:Authentication against multiple identity providers using WSFederationAuthenticationModule for asp.net使用 WSFederationAuthenticationModule for asp.net 对多个身份提供者进行身份验证
【发布时间】:2015-09-07 16:46:45
【问题描述】:

我们有支持多个合作伙伴的多租户 asp.net MVC 网站。目前我们正在使用表单身份验证来对用户进行身份验证。现在,一些合作伙伴要求 SAML 支持单点登录。

我进行了快速 POC 以针对“Thinktecture”身份提供者对其进行测试。我所做的只是为 VS 2012 安装“身份和访问”扩展并配置身份提供者。我注意到扩展在 web.config 文件中添加了配置设置,例如 IP 的 URL 和领域。它还添加了“WSFederationAuthenticationModule”模块来处理身份验证。该模块在后台处理所有重定向和响应验证。

在我的情况下,由于我们将有多个身份提供者,根据合作伙伴的不同,我将选择身份提供者。不同 IP 的 URL 将存储在数据库中。我无法列出 web.config 中的所有 IP。因此,我需要一种机制,我可以将用户重定向到适当的 IP URL,一旦 IP 回发结果,验证结果并通过声明检索用户信息。我不想对结果进行 XML 解析并验证响应,而只想调用“WSFederationAuthenticationModule”中的方法来完成繁重的工作。但我不确定哪些方法对我有用。有人可以帮助我或列出我需要执行的方法序列吗?

【问题讨论】:

    标签: asp.net authentication saml-2.0 federated-identity ws-federation


    【解决方案1】:

    看看我的简单例子

    http://www.wiktorzychla.com/2014/11/simplest-saml11-federated-authentication.html

    诀窍是不要在管道中使用 WSFam 模块,而是使用它的 api 来触发重定向和使用响应。如果你按照我的代码,你会看到有两个子句

     // wsfed response or not
     if ( !fam.IsSignInResponse(...) )
        // redirect to provider
     else
        // create local config and validate the incoming token
    

    这个简单的例子非常适合多租户场景,实际上我们在多租户环境中每天都使用ws-fed,大多数客户端都是基于这种核心方法。

    也就是说,在使用响应的分支中以编程方式创建 SecurityTokenHandlerConfiguration 可以让您完全控制如何为不同租户验证令牌。

    【讨论】:

    • 感谢您的链接。这真的很有帮助。我想与您核实的另一件事是认证/令牌验证过程。在您的博客中,您提供了“IssuerNameRegistry”接口的示例实现。您能否详细说明具体实施中应包括哪些内容?
    • @Amey:在我的博文下方回答。如果您需要更多详细信息,请在此处留言。
    • 我只是想说非常感谢这个答案。你应该得到很多支持。
    猜你喜欢
    • 2018-01-22
    • 2019-07-20
    • 2018-03-08
    • 2018-11-28
    • 2013-09-13
    • 1970-01-01
    • 2011-05-01
    • 2020-09-17
    • 2021-02-28
    相关资源
    最近更新 更多