이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 2|회답: 0

[출처] .NET/C# JWT 토큰 서명의 유효성을 검증하는 두 가지 방법

[링크 복사]
게시됨1분 전 | | | |
요구사항: API를 요청할 때 JWT 토큰 인증 정보가 포함됩니다. 백엔드는 토큰 서명이 유효한지 확인하고, 만료되었는지, 발행 정보 등을 확인해야 합니다.

JSON Web Key Set URI

jwks_uri(JSON Web Key Set URI)는 OAuth 2.0 및 OpenID Connect(OIDC) 사양의 표준 구성 항목입니다.

간단히 말해, 인증 서버가 "공개키 집합"을 게시하는 곳을 가리키는 공개 URL 주소(또는 엔드포인트)입니다. 표준 OIDC 프로세스에서 인증 서버는 jwks_uri 주소를 포함하는 서비스 탐색 엔드포인트를 제공합니다.

대중적인 은유

인증 서버에서 발행한 JWT(또는 ID 토큰)가 공식 도장이 찍힌 편지와 비슷하다면, 다음과 같습니다:

• 개인 키: 인증 서버가 보관하는 금고에 잠긴 "물리적 인장"으로, 도장(서명)에 사용됩니다.
• jwks_uri: 인증 서버가 공식 웹사이트에 게시한 "도장 패턴 공개 섹션"입니다.
• 제3자 애플리케이션(클라이언트 또는 리소스 서버): 이메일을 받은 후 이 jwks_uri 주소에서 인장 디자인(공개키)을 다운로드하여 편지의 도장과 대조하여 공식 회사에서 발급한 편지이며 변조되지 않았음을 증명합니다.

여기서 키 컬렉션에서의 사용의 의미는 다음과 같습니다:

"sig": 서명으로, 데이터 무결성과 변조 방지 보호를 보장하기 위해 서명을 검증하거나 생성하는 데 사용됩니다.
"enc": 암호화로, 데이터를 암호화하거나 복호화하고, 키 관리(키 암호화)하여 데이터 기밀성을 보장하는 데 사용됩니다.

아래에 나와 있습니다:



JWT 정보 구문 분석

먼저, nuget 패키지를 설치하세요:System.IdentityModel.Tokens.Jwt, 는 jwt에서 청구 정보를 읽으며, 코드는 다음과 같습니다:

출력은 다음과 같습니다:
베어러
1059ec2e-ffa8-4ff5-bc47-f25d7E37AA5A

JWT 서명의 유효성을 검증하세요

먼저 System.IdentityModel.Tokens.Jwt 패키지를 참조해야 합니다. 서명의 유효성을 검증하는 방법은 두 가지가 있습니다.

해결책 1: X.509 인증서 체인

디직렬화는 X.509 국제 표준에 따라 수행되며, 인증서에서 공개키, 발행자, 만료일, 일련번호 등 모든 구조화된 정보를 추출하여 X509Certificate2 객체를 생성합니다. 마지막으로, JWT 토큰을 검증하기 위해 숨겨진 RSA 공개키를 얻습니다. 코드는 다음과 같습니다:
아래에 나와 있습니다:



해결책 2: JsonWebKey

보안 키로 변환하기: 내부의 알고리즘 유형을 자동으로 식별합니다. 그 다음 토큰의 유효성을 검증합니다. 코드는 다음과 같습니다:
(끝)




이전의:.NET/C# Roslyn을 기반으로 객체 속성, 필드, 주석을 얻으세요
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com