我正在尝试验证来自第三方的Siteminder IDP的SAML响应。我已经安装了他们提供的证书。当我调用 ValidateToken 方法(System.IdentityModel.Tokens)来创建声明时,我收到以下错误:
WIF10201:找不到有效的密钥映射 securityToken:' System.IdentityModel.Tokens.X509SecurityToken'和 发行人:'发行人uri'
我深入挖掘错误,并通过方法 GetIssuerName (System.IdentityModel.Tokens)抛出错误。
问题出在哪里?我搜索了这个问题,但没有找到任何与我的案例有关的内容。来自我的客户端的SAML令牌是否存在问题,或者我在实现中缺少某些内容。我对联合身份验证相当新,所以请原谅所使用术语的任何不准确之处。
拉夫
答案 0 :(得分:1)
好的找到了解决方案但又不太了解它背后的读取(完整的菜鸟,当我知道更多时会更新答案)。
遵循这种将SAML2响应转换为WSFed响应的方法,然后在我运行我的代码的新令牌上,现在错误消失了。
注意:您仍然必须覆盖验证令牌方法(我最初这样做)以避免以下错误:
“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
中,当然还有旧(辅助)键的指纹。只要我用新(主)键的指纹替换它,错误就消失了。