我正在尝试为我正在调查的 WIF 场景实施自定义 STS,但它失败了。尝试从用于签署令牌的证书中获取私钥时失败。我使用以下配置创建 STS:
var signingCert = new X509Certificate2(@"C:\<path>\MySigningCertificate.pfx");
var config
= new SecurityTokenServiceConfiguration()
{
DisableWsdl = true,
TokenIssuerName = "Tribold",
SecurityTokenService = typeof(TriboldSecurityTokenService),
SigningCredentials = new X509SigningCredentials(signingCert),
CertificateValidationMode = X509CertificateValidationMode.Custom,
CertificateValidator = new CertificateValidator()
};
但是,配置 WCF 诊断日志记录后,我在服务跟踪查看器中收到以下消息:
The private key is not present in the X.509 certificate.
这似乎被记录为代码来自我的自定义 STS(即,在调用GetOutputClaimsIdentity(...)
我的自定义 STS 类之后,因此我只能假设它现在正在尝试签署已颁发的安全令牌并失败,因为它无法获得这样做的私钥。
私钥似乎出现在加载的证书上:
Debug.Assert(signingCert.HasPrivateKey == true);
但后来失败了。我没有运气解决这个问题,请帮助!