トークンを検証しようとすると、以下の例外が発生する理由は何でしょうか。
TokenValidationParameters validationParameters = new TokenValidationParameters();
validationParameters.ValidIssuers = new List<string>() { "http://www.company.com" };
validationParameters.IssuerSigningToken = new RsaSecurityToken(
(System.Security.Cryptography.RSACryptoServiceProvider) Certificate.Get().PublicKey.Key);
SecurityToken securityToken = null;
var claimsPrincipal =
(FederatedAuthentication
.FederationConfiguration
.IdentityConfiguration
.SecurityTokenHandlers
.First() as JwtSecurityTokenHandler)
.ValidateToken(tokenString, validationParameters, out securityToken);
エラー:
IDX10500: Signature validation failed. Unable to resolve SecurityKeyIdentifier:
'SecurityKeyIdentifier
(
IsReadOnly = False,
Count = 2,
Clause[0] = X509ThumbprintKeyIdentifierClause(
Hash = 0x6B7ACC520305BFDB4F7252DAEB2177CC091FAAE1),
Clause[1] = System.IdentityModel.Tokens.NamedKeySecurityKeyIdentifierClause
)
',
token: '{"typ":"JWT","alg":"RS256","
ベストアンサー1
エラーから判断すると、次のような x509 セキュリティ キーまたは資格情報を追加する必要があると思われます。
var credentials = new X509CertificateCredentials(
Certificate.Get(),
new SecurityKeyIdentifier(
new NamedKeySecurityKeyIdentifierClause(
"kid",
"6B7ACC520305BFDB4F7252DAEB2177CC091FAAE1")));
例えばこの部分:
new SecurityKeyIdentifier(
new NamedKeySecurityKeyIdentifierClause(
"kid",
"6B7ACC520305BFDB4F7252DAEB2177CC091FAAE1")
また、証明書がルート ストアにインストールされていることを確認してください。