ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ASP.NET CORE에서의 클레임 키 임의 변경
    프로그래밍/기록, 개념, 용어 2022. 11. 4. 20:42
    반응형

    ASP.NET Core에서 JWT 클레임을 이용해 유저의 인증을 처리하려고 했다.

    토큰은 아래와 유사한 코드로 만들어졌다. (특별할 것이 없음)

    var handler = new JsonWebTokenHandler();
    
    var descriptor = new SecurityTokenDescriptor
    {
        Subject = new ClaimsIdentity(new Claim[] 
        {
            // "sub" 클레임의 값 설정
            new Claim(JwtRegisteredClaimNames.Sub, Guid.NewGuid().ToString())
        }),
        SigningCredentials = new(new SymmetricSecurityKey(Encoding.UTF8.GetBytes("THISISASECRETKEY")), "HS256")
    };
    
    string jwt = handler.CreateToken(descriptor).ToString();

     

    그리고 그리고 위처럼 만든 토큰을 사용자로부터 받았을 때, 아래 코드에서 예외가 발생했었는데,

    var user = context.GetHttpContext().User;
    
    long accountId = long.Parse(user.FindFirstValue(JwtRegisteredClaimNames.Sub));

     

    확인해보니 Sub 클레임의 키가 이상하게 바뀌어져 있었다. 

    사용자로 부터 JWT 토큰을 받았을 때, Sub 클레임이 Url 처럼 바뀐 것이다.(http://schemas.xmlsoap.org/ws/...)

    이처럼 클레임의 이름이 바뀌는 것을 방지하려면 아래 코드를 프로그램 시작 단계에서 호출하면 된다.

    JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();

     

    그러면 클레임의 키가 변경되지 않는다.

     

    참고

    반응형

    '프로그래밍 > 기록, 개념, 용어' 카테고리의 다른 글

    C#, xUnit으로 테스트  (0) 2022.11.27
    간단한 디펜던시 인젝션(DI) 구현  (0) 2022.11.14
    C# Channel  (0) 2022.10.28
    C# - ArrayPool, MemoryPool  (0) 2022.10.13
    동시성 토큰  (0) 2022.10.02
Designed by Tistory.