1

我有一个 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 发起的解决方案运行。

因此我有两个问题:

  1. 有没有人设法用 WIF 克服这个错误?(我不需要 WIF 扩展,因为我只关心处理 SAML2 令牌,而不是协议。

  2. 要在 IdP 发起的环境中使用 WIF,我知道不需要配置,我只需关闭身份验证并检查传入的令牌。但是,我更愿意在完整的 WIF 管道中检查令牌,但这需要配置。如何配置 WIF 以在此 IdP 启动的环境中运行?

非常感谢

布赖恩

4

1 回答 1

0

如果您需要反序列化令牌,您可以考虑使用Saml2SecurityTokenHandler

我还要问,您的场景是否需要您自己反序列化令牌?WIF 与 ASP.NET MVC 应用程序很好地集成,因此您可以转而依赖 WIF 为您执行此操作。在此处查看 Eugenio 的答案

于 2012-07-04T15:52:40.713 回答