尝试从SAML创建声明时出现错误“WIF10201:找不到有效的键映射”

时间:2014-07-29 11:22:41

标签: x509certificate wif saml-2.0 siteminder adfs2.1

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

  

WIF10201:找不到有效的密钥映射   securityToken:' System.IdentityModel.Tokens.X509SecurityToken'和   发行人:'发行人uri'

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

问题出在哪里?我搜索了这个问题,但没有找到任何与我的案例有关的内容。来自我的客户端的SAML令牌是否存在问题,或者我在实现中缺少某些内容。我对联合身份验证相当新,所以请原谅所使用术语的任何不准确之处。

拉​​夫

3 个答案:

答案 0 :(得分:1)

好的找到了解决方案但又不太了解它背后的读取(完整的菜鸟,当我知道更多时会更新答案)。

遵循这种将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.”

感谢。

答案 1 :(得分:0)

您可能缺少将颁发者名称(在令牌内指定)映射到证书(可能使用指纹指定)的配置。我想你通过web.config中的一些配置来解决这个问题。看看p.e. Microsoft validating issuer name registry该页面包含一些示例配置。正确设置完全取决于您的情况。

答案 2 :(得分:0)

我想留意以备将来参考,因为我也遇到了这个错误,但我的解决方案却有所不同。我在Windows Server 2012下使用基于声明的ADFS(3.0)身份验证的自定义MVC应用程序中收到WIF10201错误。在MVC应用程序的web.config中,记录了ADFS令牌签名密钥的指纹。事实证明,当签名证书即将到期时,ADFS会创建一个新密钥。新密钥标记为“primary”,旧密钥在ADFS控制台中标记为“secondary”(在AD FS / Service / Certificates下)。所以在我的web.config中,当然还有旧(辅助)键的指纹。只要我用新(主)键的指纹替换它,错误就消失了。