1

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

我做了快速POC测试它反对“Thinktecture”身份提供商。我所做的只是安装VS 2012的“身份和访问”扩展,并配置身份提供商。我注意到扩展在web.config文件中添加了像IP和领域的URL这样的配置设置。它还添加了“WSFederationAuthenticationModule”模块来处理认证。这个模块处理所有的重定向和场景响应的验证。

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

回答

2

看看我的简单的例子

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

关键是不要有在pipleline的WSFam模块,而是使用其API来触发重定向和消费的响应。如果你按照我的代码,你会看到有两个条款

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

这个简单的例子是非常适用于多租户的情况下,实际上我们使用WS-送入多租户环境中日常大多数客户都是基于这个核心做法。

即,通过编程方式在消费响应的分支中创建SecurityTokenHandlerConfiguration,可以完全控制如何验证不同租户的令牌。

+0

感谢您的链接。这真的很有帮助。还有一件事我想与你核对是认证/验证过程。在您的博客中,您已经给出了“IssuerNameRegistry”接口的示例实现。您能否详细说明具体实施中应包含哪些内容? – Amey

+0

@Amey:在我的博客文章下面回答。如果您需要更多详细信息,请在此处放一张便条。 –

+0

我只想说这个答案非常感谢。你应该得到许多赞扬。 – mghaoui

相关问题