Microsoft의 ID 모델 토큰을 사용하여 여러 웹 사이트에서 로그인 한 사용자를 인증하려고합니다. HmacSha256 알고리즘을 사용하여이 작업을 수행했지만 회사에서 AES256을 사용해야합니다. 아픈 쇼 코드,하지만 내 질문에 누군가가 AES256 서명 알고리즘을 사용하여 토큰을 만드는 방법을 알고 있습니까? 은 무엇 작동합니다AES256 서명 자격 증명으로 jwt 사용
var plainTextSecurityKey = "My very large security key to encrypt and pass in a token";
var signingKey = new Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(Encoding.Default.GetBytes(plainTextSecurityKey));
var signingCredentials = new Microsoft.IdentityModel.Tokens.SigningCredentials(signingKey, Microsoft.IdentityModel.Tokens.SecurityAlgorithms.HmacSha256);
var header = new JwtHeader(signingCredentials);
var claimsIdentity = new ClaimsIdentity(new List<Claim>()
{
new Claim(ClaimTypes.Name,<passedinlanid>),
new Claim(ClaimTypes.Role,<passedinrole>),
}, "Custom");
var securityTokenDescriptor = new Microsoft.IdentityModel.Tokens.SecurityTokenDescriptor()
{
Audience = "https://myurl.com",
Issuer = "http://my.tokenissuer.com",
Subject = claimsIdentity,
SigningCredentials = signingCredentials,
};
var tokenHandler = new JwtSecurityTokenHandler();
var plainToken = tokenHandler.CreateToken(securityTokenDescriptor);
var signedAndEncodedToken = tokenHandler.WriteToken(plainToken);
은 내가 사용해야하는 줄
var signingCredentials = new Microsoft.IdentityModel.Tokens.SigningCredentials(signingKey, Microsoft.IdentityModel.Tokens.SecurityAlgorithms.Aes256Encryption);
하지만 난이 오류 ({ "IDX10634 :. SignatureProvider을 만들 수 없습니다 \ nAlgorithm : 'http://www.w3.org/2001/04/xmlenc#aes256-cbc', SecurityKey : 'Microsoft.IdentityModel.Tokens.SymmetricSecurityKey'\ n은 지원되지 않습니다. "}) var plainToken = tokenHandler.CreateToken (securityTokenDescriptor);
이제 오류의 의미를 이해합니다. JWT를 사용하여 AES256 암호화를 사용할 방법이 있는지 모르겠습니까?
이 오류는 사용중인 라이브러리 및 플랫폼에서 지원되지 않는 알고리즘을 요청한 것 같습니다. 어떤 플랫폼과 라이브러리를 사용하고 있는지 자세히 설명해 주시겠습니까? – yfisaqt
.NET 4.5.2, C# 및 모두를 사용하고 있습니다 System.IdentityModel.Tokens.Jwt; Microsoft.IdentityModel.Tokens; – Scott
답변이 필요할 수있는 사람에게 해결책을 찾은 것 같습니다. 내가 한 일은 HmacSha256 알고리즘을 통해 토큰을 만든 다음 AES256 알고리즘으로 그 토큰을 암호화 한 것입니다. 그런 다음 httpOnly 쿠키에 저장됩니다. 수신 측에서는 쿠키 값을 읽고 AES256 문자열을 해독 한 다음 정상적으로 토큰을 확인합니다. 이 암호화 과잉 될 수 있습니다 이해하지만 내 회사는 AES256 사용해야합니다. 대답에 내 코드를 게시하십시오. – Scott