私は調査中のWIFシナリオ用のカスタムSTSを実装しようとしていますが、失敗しています。トークンに署名するために使用された証明書から秘密鍵を取得しようとすると失敗します。私は、次のような構成でSTSを作成します。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()
};
しかし、WCF診断ログを構成して、私は、サービストレースビューアに次のメッセージが出ます:これは、として記録されるように見える
The private key is not present in the X.509 certificate.
をコードは私のカスタムSTSから出てきます(つまり、自分のカスタムSTSクラスでGetOutputClaimsIdentity(...)
を呼び出した後に発行されたので、発行されたセキュリティトークンに署名しようとしていますが、そうするために秘密鍵を取得できないため。
秘密鍵がロードされた証明書上に存在することが表示されます。
Debug.Assert(signingCert.HasPrivateKey == true);
が、それは後に失敗します。私はこれを解決する運がないよ、助けてください!
確認する:mmc証明書スナップインで証明書のプロパティを見ると、「この証明書に対応する秘密鍵がありますか? – nzpcmad
@nzpcmad - 証明書には南京錠があり、証明書をダブルクリックして詳細を表示するとメッセージが表示されます。証明書から作成された.PFXファイルをインポートしました。 –