尝试从 SAML 创建声明时出错"WIF10201: No valid key mapping found"



我正在尝试验证来自第三方Siteminder IDP的SAML响应。我已经安装了他们提供的证书。当我调用ValidateToken方法(System.IdentityModel.Tokens)来创建声明时,我得到以下错误:

WIF10201:没有找到有效的键映射securityToken:"System.IdentityModel.Tokens。X509SecurityToken"和发行者:'发行者uri'

我深入挖掘,找到错误,并通过方法GetIssuerName (System.IdentityModel.Tokens)抛出。

问题在哪里?我在谷歌上搜索了这个问题,但没有找到任何与我的情况有关的东西。来自我的客户端的SAML令牌是否有问题,或者在实现中缺少一些东西。我对联邦认证相当陌生,所以请原谅我使用的术语不准确。

Gaurav

Ok找到了解决方案,但不能完全理解背后的阅读(完全是新手,当我知道更多时将更新答案)。

遵循将SAML2响应转换为WSFed响应的方法,然后在新令牌上运行代码,现在错误消失了。

http://blogs.msdn.com/b/bradleycotier/archive/2012/10/28/saml-2-0-tokens-and-wif-bridging-the-divide.aspx

注意:您仍然必须重写验证令牌方法(我最初已经这样做了)以避免以下错误:

“ID4154: A Saml2SecurityToken cannot be created from the Saml2Assertion because it contains a SubjectConfirmationData which specifies an InResponseTo value. Enforcement of this value is not supported by default. To customize SubjectConfirmationData processing, extend Saml2SecurityTokenHandler and override ValidateConfirmationData.”

谢谢。

您可能缺少将颁发者名称(在令牌中指定)映射到证书(可能使用拇指指纹指定)的配置。我想你在你的web.config中使用一些配置来解决这个问题。请查看p.e. . Microsoft验证发行者名称注册表。该页包含一些示例配置。

我想做一个笔记,以供将来参考,因为我也遇到了这个错误,但我的分辨率是不同的。我在Windows Server 2012下使用ADFS(3.0)基于声明的身份验证的自定义MVC应用程序中得到了WIF10201错误。在MVC应用的web.config中,记录了ADFS令牌签名密钥的指纹。结果是,当签名证书即将到期时,ADFS创建一个新密钥。在ADFS控制台中,新密钥被标记为"主",旧密钥被标记为"次"(在ADFS/Service/Certificates下)。所以在我的web.config中,当然,仍然有旧的(二级)密钥的拇指指纹。当我用新的(主)键的拇指指纹替换它时,错误就消失了。

最新更新