在asp.net mvc中身份验证SAML2(P?)令牌
我有一个ASP.NET MVC应用程序,它目前允许用户通过两个ThinkTecture IDP服务器进行连接。 MVC应用程序信任这两个IDP服务器,并完美验证用户身份。
当前安装程序使用web.config中< modules >
部分的< System.IdentityModel.Services.WSFederationAuthenticationModule >
和< System.IdentityModel.Services.SessionAuthenticationModule >
来处理这些问题。
我们现在有一个新的派对想要通过向我们发送一个SAML v2令牌来验证他们的用户,但是MVC应用程序似乎无法识别它。
我比较了来自IDP服务器(SAML1)和新登录服务器(SAML2)的POST响应,并且存在一些细微差别,这可能会导致问题。
IDP服务器似乎使用< trust:RequestedSecurityToken >
属性来换行到< saml:Assertion >
。 而新客户端发送包含< saml >< samlp:Response >
的POST请求主体
我的问题是:
1)这是新的< samlp:Response >
微软WIF不支持的SAML2P版本吗? 或者它只是对< saml:Assertion >
元素感兴趣?
2)WIF将在哪里查找SAML令牌? POST正文? 验证头(承载)?
3)目前,当用户未通过身份验证时,会将其重定向到本地IDP服务器,然后登录并返回SAML响应,然后提取。 但新客户端只会传递一个请求来查看带有SAML令牌的页面(真正的单点登录)。 我想知道这种差异是否会导致问题。 我目前手动处理重定向到用户的本地IDP,所以试图关闭新客户端。
编辑经过大量挖掘...
微软WIF不支持SAML2协议,并且很可能是。
SAML2协议消息通常作为HTTP POST主体中的表单参数(saml = <saml:Response> <etc ...),在我的情况下,它不使用标准参数格式(saml =),XML只是直接内联在HTTP POST主体中。
AFAIK,samlp是WIF支持的协议。 它是WS-Federation中使用的查询字符串参数的替代品。 你应该寻找第三方扩展(我应该如何在ASP.NET MVC 4服务提供者中实现SAMLP 2.0?)。 由于我没有使用任何我自己,我cananot给进一步的建议。
事实上,它没有得到官方的支持,但你可以这样做,使其工作。
http://blogs.msdn.com/b/bradleycotier/archive/2012/10/28/saml-2-0-tokens-and-wif-bridging-the-divide.aspx
我发现的最佳解决方案是Kentor IT - AuthServices。
它处理数字签名的SAML令牌。
虽然它对我来说不起作用,因为我的第三方似乎在使用非标准绑定技术(而不是标准HTTP Post或HTTP重定向),所以我将不得不构建自己的自定义绑定。
链接地址: http://www.djcxy.com/p/71783.html