我有一个 MVC 4 应用程序从发起 IdP 接收 SAML2 令牌。我可以在令牌到达时看到它,并且可以对其进行解密。但是,我想使用 WIF 3.5 执行此操作,并且当我尝试使用 WSSecurityTokenSerializer 时似乎遇到了 SAML 命名空间问题,如下所示:
System.Xml.XmlException 未被用户代码处理 HResult=-2146232000 Message=Cannot read the token from the 'Response' element with the 'urn:oasis:names:tc:SAML:2.0:protocol' namespace for BinarySecretSecurityToken, with a ' ' 值类型。如果预计此元素有效,请确保将安全性配置为使用指定名称、命名空间和值类型的令牌。Source=System.ServiceModel LineNumber=0 LinePosition=0 StackTrace:在 System.ServiceModel.Security.WSSecurityTokenSerializer.ReadTokenCore(XmlReader reader, SecurityTokenResolver tokenResolver) at System.IdentityModel.Selectors.SecurityTokenSerializer.ReadToken(XmlReader reader, SecurityTokenResolver tokenResolver) 在 SamlHandlingTests。在 g 中的 SamlTests.TestMethod1():
我在这里看到了StackOverflow 问题的帖子,但直接使用 XML 做事的最终解决方案不适合我,因为我需要能够将其作为标准 IdP 发起的解决方案运行。
因此我有两个问题:
有没有人设法用 WIF 克服这个错误?(我不需要 WIF 扩展,因为我只关心处理 SAML2 令牌,而不是协议。
要在 IdP 发起的环境中使用 WIF,我知道不需要配置,我只需关闭身份验证并检查传入的令牌。但是,我更愿意在完整的 WIF 管道中检查令牌,但这需要配置。如何配置 WIF 以在此 IdP 启动的环境中运行?
非常感谢
布赖恩