0
私は以下の提案を試してみましたが、SecurityAlgorithms.HmacSha256Signatureのために働いています。 IDX10634:SignatureProvider SignatureAlgorithmを作成できません: 'SHA256'、
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(symmetricKey), Microsoft.IdentityModel.Tokens.SecurityAlgorithms.HmacSha256Signature)
が、それはSecurityAlgorithms.RsaSha256Signatureのために働いていません。
は、コードを推奨しました。
Microsoft.IdentityModel.Tokens.SigningCredentials SigningCredentials = new Microsoft.IdentityModel.Tokens.SigningCredentials(_signingKey, SecurityAlgorithms.RsaSha256Signature);
以下のエラーが発生しました。
DX10634:SignatureProviderを作成できません。
のsignatureAlgorithm: 'SHA256'、SecurityKey: 'Microsoft.IdentityModel.Tokens.SymmetricSecurityKey' は
がサポートされていません。私は、SHA256のためにJWTトークンを変換する必要があります。サンプルコードを親切にソリューションを提供してください。
私のコードを見つけてください:
string _privateSecretKey = "MIIEogIBAAKCAQEAytYejMhaYjZwFgqP7WKh2bkf08=";
Microsoft.IdentityModel.Tokens.SymmetricSecurityKey _signingKey = new Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(Encoding.ASCII.GetBytes(_privateSecretKey));
Microsoft.IdentityModel.Tokens.SigningCredentials SigningCredentials = new Microsoft.IdentityModel.Tokens.SigningCredentials(_signingKey, SecurityAlgorithms.RsaSha256Signature);
JwtHeader head = new JwtHeader();
head.Add("kid", "firstpublickey");//TBD
string sNewGuid = Guid.NewGuid().ToString("n");
var claims = new[]
{
new Claim(JwtRegisteredClaimNames.Iss, oTokenPostData.ClientID),
new Claim(JwtRegisteredClaimNames.Sub, oTokenPostData.ClientID),
new Claim(JwtRegisteredClaimNames.Aud, oTokenPostData.tokenUri),
new Claim(JwtRegisteredClaimNames.Jti, sNewGuid),
new Claim(JwtRegisteredClaimNames.Exp, ((int)DateTime.Now.AddMinutes(55).Subtract(UnixEpoch).TotalSeconds).ToString(System.Globalization.CultureInfo.InvariantCulture)),
new Claim(JwtRegisteredClaimNames.Iat, ((int)DateTime.Now.Subtract(UnixEpoch).TotalSeconds).ToString(System.Globalization.CultureInfo.InvariantCulture))
};
JwtPayload payload = new JwtPayload(claims);
JwtSecurityToken jwt = new JwtSecurityToken(head, payload);
var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt);
RSAは非対称アルゴリズムであるため、非対称セキュリティキーが必要になります。未加工のRSAオブジェクトがある場合はRsaSecurityKey、証明書を持っている場合はX509SecurityKeyが必要です。 (それがあなたの唯一の問題なのかどうかわからないので、答えではなくコメントです) – bartonjs