0

我有一个 ASP.NET MVC 应用程序,它目前允许用户通过两个 ThinkTecture IDP 服务器进行连接。MVC 应用程序信任这两个 IDP 服务器,它完美地验证了用户。

当前设置使用web.config 部分中的< System.IdentityModel.Services.WSFederationAuthenticationModule >和来处理这些。 < System.IdentityModel.Services.SessionAuthenticationModule >< modules >

我们现在有一个新方想要通过向我们发送 SAML v2 令牌来验证他们的用户,但 MVC 应用程序似乎无法识别它。

我比较了来自 IDP 服务器 (SAML1) 和新登录服务器 (SAML2) 的 POST 响应,并且存在一些细微的差异,这可能会导致问题。

IDP 服务器似乎使用< trust:RequestedSecurityToken >属性来包装到< saml:Assertion >. 而新客户端发送的 POST 请求正文包含< saml >< samlp:Response >

我的问题是:

1) 这个新< samlp:Response >的 SAML2P 版本是否不受 Microsoft WIF 支持?或者它只是对< saml:Assertion >元素感兴趣?

2) WIF 将在哪里寻找 SAML 令牌?发布身体?身份验证头(承载)?

3)目前,当用户未通过身份验证时,它将他们重定向到他们的本地 IDP 服务器,他们登录并返回 SAML 响应,然后被拾取。但是新客户端将简单地传递一个请求以查看带有 SAML 令牌的页面(真正的单点登录)。我想知道这种差异是否会导致问题。我目前手动处理重定向到用户的本地 IDP,因此已尝试为新客户端关闭此功能。

编辑 经过大量挖掘......

  1. Microsoft WIF 不支持 SAML2 协议,而且很可能会支持。

  2. SAML2 协议消息通常作为表单参数 (saml= < saml:Response>< etc... 在 HTTP POST 的正文中。在我的情况下,它没有使用 (saml=) 的标准参数格式,XML只是直接内联在 HTTP POST 正文中。

4

3 回答 3

3

事实上,它没有得到官方的支持,但你可以做这样的事情来让它工作。

http://blogs.msdn.com/b/bradleycotier/archive/2012/10/28/saml-2-0-tokens-and-wif-bridging-the-divide.aspx

于 2015-07-24T08:46:04.833 回答
1

AFAIK,samlp 是 WIF 不(还?)支持的协议。它是 WS-Federation 中使用的查询字符串参数的替代品。您应该寻找第三方扩展(我应该如何在 ASP.NET MVC 4 服务提供者中实现 SAMLP 2.0?)。由于我自己没有使用过任何产品,因此无法提供进一步的建议。

于 2015-07-17T18:30:48.763 回答
0

我找到的最佳解决方案是Kentor IT - AuthServices

它处理数字签名的 SAML 令牌。

虽然它对我来说不是开箱即用的,因为我的第三方似乎使用的是非标准绑定技术(而不是标准的 HTTP Post 或 HTTP Redirect),所以我必须构建自己的自定义绑定。

于 2015-10-29T12:47:37.130 回答