728x90
반응형
728x170
using Microsoft.IdentityModel.Tokens;
using System;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
#region 클레임 주체 구하기 - GetClaimsPrincipal(token, secretKey)
/// <summary>
/// 클레임 주체 구하기
/// </summary>
/// <param name="token">토큰</param>
/// <param name="secretKey">비밀 키</param>
/// <returns>클레임 주체</returns>
public ClaimsPrincipal GetClaimsPrincipal(string token, string secretKey)
{
TokenValidationParameters parameters = new()
{
ValidateIssuer = false,
ValidateAudience = false,
ValidateLifetime = false,
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey)),
};
JwtSecurityTokenHandler tokenHandler = new();
ClaimsPrincipal principal = tokenHandler.ValidateToken(token, parameters, out SecurityToken securityToken);
if
(
securityToken is not JwtSecurityToken jwtSecurityToken ||
!jwtSecurityToken.Header.Alg.Equals(SecurityAlgorithms.HmacSha256, StringComparison.InvariantCultureIgnoreCase)
)
{
throw new SecurityTokenException("Invalid token");
}
return principal;
}
#endregion
728x90
반응형
그리드형(광고전용)
'C# > Web API' 카테고리의 다른 글
[C#/WEB API] 누겟 설치 : Microsoft.AspNet.WebApi.SelfHost (0) | 2021.11.29 |
---|---|
[C#/WEB API] JWT 토큰 생성하기 (0) | 2021.11.13 |
[C#/WEB API] JWT 토큰에서 클레임 주체 구하기 (0) | 2021.11.13 |
[C#/WEB API] PostgreSQL 데이터베이스 사용하기 (0) | 2021.07.25 |
[C#/WEB API] ControllerBase 클래스 : StatusCode 메소드를 사용해 검증 오류 처리하기 (0) | 2020.10.30 |
[C#/WEB API] IRouteConstraint 인터페이스 : 커스텀 경로 제약 조건 사용하기 (0) | 2020.10.30 |
[C#/WEB API] 스캐폴딩 기능을 사용해 WEB API 앱 만들기 (0) | 2020.10.20 |
[C#/WEB API] ConsumesAttribute/ProducesAttribute 클래스 - 요청/응답 컨텐트 타입 설정하기 (0) | 2020.10.11 |
[C#/WEB API] Controller 클래스 : Json 메소드를 사용해 JSON 데이터 받기 (0) | 2020.10.10 |
[C#/WEB API] WEB API 애플리케이션 만들기 (0) | 2020.10.10 |
[C#/WEB API] 누겟 설치 : Microsoft.AspNet.WebApi.Client (0) | 2020.10.09 |
댓글을 달아 주세요