我正在使用ADFS的IDP页面进行ADFS身份验证。
我能够成功重定向到IDP页面,并且能够在获得身份验证后成功重定向回我的应用程序。
返回我的应用程序后,我收到以下错误消息:
找不到securityToken的有效键映射: 'System.IdentityModel.Tokens.X509SecurityToken'和发行人
我在web.config文件中添加了以下代码来解密声明信息。
<authority name="http://idp.neuronetics.com/adfs/services/trust">
<keys>
<add thumbprint="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234"/>
</keys>`enter code here
<validIssuers>
<add name="http://adfsServiceDomain/adfs/services/trust" />
</validIssuers>
</authority>
我已经回顾了许多与此相关的文章。大多数文章建议验证ADFS令牌签名证书的指纹。
我经过双重检查,指纹很完美。
有人对此问题有任何想法吗?
请告知。
如果您有任何疑虑或疑问,或者您需要更多信息,请与我们联系。
答案 0 :(得分:0)
由于您使用的是WIF而不是OWIN,因此您几乎可以覆盖默认的颁发者注册表并提供自己的注册表,从而更好地控制接受哪些发布者。
覆盖颁发者注册表涉及提供一个继承自IssuerNameRegistry
public class CustomIssuerNameRegistry : IssuerNameRegistry
{
public override string GetIssuerName( SecurityToken securityToken )
{
X509SecurityToken x509Token = securityToken as X509SecurityToken;
if ( x509Token != null &&
x509Token.Certificate != null
)
{
// this is where you validate the certificate programatically
// for example, you can verify the thumbprint against
// a list of accepted thumprints
// return a string, the name of the issuer to indicate
// succesfull validation
return "issuer name";
}
throw new SecurityTokenException( "Untrusted issuer." );
}
并在web.config
<system.identityModel>
<identityConfiguration>
<issuerNameRegistry type="Namespace.CustomIssuerNameRegistry, AssemblyName" />
</identityConfiguration>
</system.identityModel>
此方法可让您彻底调试传入令牌的证书。