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/.NET5] JWT 토큰 생성하기 (0) | 2021.11.13 |
[C#/WEB API/.NET5] WEB API에서 JWT(Json Web Token) 인증 사용하기 (0) | 2021.10.04 |
[C#/WEB API/.NET5] 스트림을 사용해 대용량 파일 업로드 하기 (0) | 2021.08.01 |
[C#/WEB API/.NET5] 대용량 파일 업로드 하기 (2GB 제한) (0) | 2021.07.31 |
[C#/WEB API/.NET5] 대용량 데이터를 스트리밍 방식으로 전달받기 (PostgreSQL 연동) (0) | 2021.07.25 |
[C#/WEB API/.NET5] PostgreSQL 데이터베이스 사용하기 (0) | 2021.07.25 |
[C#/WEB API/.NET5] 커스텀 미들웨어를 사용해 API 키 인증하기 (0) | 2021.07.24 |
[C#/WEB API/.NET5] IAsyncActionFilter 인터페이스 : API 키 인증하기 (0) | 2021.07.24 |
[C#/WEB API/.NETCORE] ControllerBase 클래스 : StatusCode 메소드를 사용해 검증 오류 처리하기 (0) | 2020.10.30 |
댓글을 달아 주세요