-
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