asp.net core 에서 web api 를 통해 jwt 구현시 aud 를 여러개 추가할 경우가 생길 수 있습니다.
이 부분은 Audiance 자체 string 하나의 문자열도 속성 제공하지만, 여러개 추가하고자 할 경우, Claims 속성을 통해 Dictionary 로 다중 추가 가능합니다.
다시 상세히 말씀 드리면, JWT 토큰에 여러 대상을 추가하려면 대상 값 목록을 만들고 JwtRegisteredClaimNames.Aud 클레임을 사용하여 이를 JwtPayload Claims 에 포함하면 됩니다. 이를 달성하기 위해 코드를 수정하는 방법은 다음과 같습니다.
var signingCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature);
// Create a list of audiences
List<string> audiences = new List<string>
{
"audience1",
"audience2",
// Add more audiences as needed
};
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = claimsIdentity,
Issuer = Issuer,
Expires = expireDateTime,
SigningCredentials = signingCredentials,
Claims = new Dictionary<string, object>
{
{
JwtRegisteredClaimNames.Aud, audiences
}
}
};
var securityToken = tokenHandler.CreateToken(tokenDescriptor);
이 코드에서는 audiences 목록('audiences')을 정의하고 여기에 원하는 audiences 값을 추가했습니다. 그런 다음 이 목록을 tokenDescriptor 내 Claims 사전의 JwtRegisteredClaimNames.Aud 클레임 값으로 포함합니다. 그러면 여러 대상이 포함된 JWT 토큰이 생성됩니다. 'audiences' 목록에 필요한 만큼 audiences을 추가할 수 있습니다.