我有一个MVC 4应用程序从初始IdP接收SAML2令牌。我可以看到令牌到达时我可以解密它。但是,我想用WIF 3.5执行此操作,并且在尝试使用WSSecurityTokenSerializer时似乎遇到SAML命名空间问题,如下所示:
System.Xml.XmlException未被用户代码处理 的HResult = -2146232000 Message =无法从'Response'元素中读取带有'urn:oasis:names:tc:SAML:2.0:protocol'的BinarySecretSecurityToken命名空间的标记,带有''ValueType。如果预期此元素有效,请确保将安全性配置为使用指定了名称,名称空间和值类型的标记。 来源= System.ServiceModel LineNumber上= 0 LinePosition = 0 堆栈跟踪: 在System.ServiceModel.Security.WSSecurityTokenSerializer.ReadTokenCore(XmlReader reader,SecurityTokenResolver tokenResolver) 在System.IdentityModel.Selectors.SecurityTokenSerializer.ReadToken(XmlReader reader,SecurityTokenResolver tokenResolver) at SamlHandlingTests.SamlTests.TestMethod1()in g:\ Projects \ mytempesub \ Solution \ SamlHandlingTests \ SamlTests.cs:第112行 InnerException:
我在这里发过一篇帖子StackOverflow question,但直接用XML做事的最终决议并不适合我,因为我需要能够将其作为标准的IdP启动解决方案来运行。
因此我有两个问题:
有没有人设法用WIF克服这个错误? (我不需要WIF扩展,因为我只关心处理SAML2令牌,而不是协议。
要在IdP启动的环境中使用WIF,我理解不需要配置,我只需设置身份验证,然后检查传入令牌。但是,我更愿意在完整的WIF管道中检查令牌,但这需要配置。如何配置WIF以在此IdP启动的环境中运行?
非常感谢
布赖恩
答案 0 :(得分:0)
如果您需要反序列化令牌,则可以考虑使用Saml2SecurityTokenHandler。
我还会问,您的方案是否要求您自己反序列化令牌? WIF与ASP.NET MVC应用程序很好地集成,因此您可以依赖WIF为您执行此操作。请参阅Eugenio的answer here。