我有一个 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,因此已尝试为新客户端关闭此功能。
编辑 经过大量挖掘......
Microsoft WIF 不支持 SAML2 协议,而且很可能会支持。
SAML2 协议消息通常作为表单参数 (saml= < saml:Response>< etc... 在 HTTP POST 的正文中。在我的情况下,它没有使用 (saml=) 的标准参数格式,XML只是直接内联在 HTTP POST 正文中。