재우니의 블로그

 

 

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을 추가할 수 있습니다.

 

 

 

{"alg":"HS256","typ":"JWT"}{"nameid":"1200","aud":["audience1","audience2"],"nbf":1693790991,"exp":1693791891,"iat":1693790991,"iss":"https://mintra.univ.me"}