J'essaie d'implémenter un STS personnalisé pour un scénario WIF que j'examine, mais il échoue. Il échoue lorsque vous essayez d'obtenir la clé privée du certificat utilisé pour signer les jetons. Je crée les STS avec la configuration suivante:Impossible de signer des jetons de sécurité avec certificat dans le scénario WIF
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()
};
Cependant, avec l'enregistrement de diagnostic WCF configuré, je reçois le message suivant dans le Service Trace Viewer:
The private key is not present in the X.509 certificate.
Cela semble être connecté comme le code sort de mon STS personnalisé (ie, après avoir appelé GetOutputClaimsIdentity(...)
sur ma classe STS personnalisée, et donc je peux seulement supposer qu'il essaie maintenant de signer le jeton de sécurité émis et échouer parce qu'il ne peut pas obtenir une clé privée pour le faire
La clé privée semble être présent sur le certificat chargé:
Debug.Assert(signingCert.HasPrivateKey == true);
mais il échoue plus tard. Je n'ai pas de chance pour résoudre ça, aidez s'il vous plaît!
Juste pour confirmer: Lorsque vous regardez les propriétés du certificat avec le composant logiciel enfichable de certificat mmc, est-ce qu'il dit "Vous avez une clé privée qui correspond à ce certificat"? – nzpcmad
@nzpcmad - Oui, le certificat comporte un cadenas et le message apparaît également lorsque vous double-cliquez sur le certificat et affichez ses détails. J'ai importé les fichiers .PFX qui ont été créés à partir des certificats. –