[Auth] JWKS
JWKS란?
[Auth] JWKS
✏️ JWKS(JSON Web Key Set)
JWKS란?
JWKS(JSON Web Key Set)
: 공개 키(Public Key) 정보를 제공하는 JSON 형식의 표준 포맷이다. 이는 JWT(JSON Web Token)의 서명을 검증할 때 사용되며, 보통 OAuth 2.0 및 OpenID Connect(OIDC) 환경에서 활용된다.
- 대부분의 OAuth 2.0 제공자는 JWKS를 자동으로 생성하고 공개 JWKS URL을 제공한다.
◼︎ 언제 사용되는가?
- JWKS는 비대칭 암호화 기반의 JWT 검증 과정에서 사용된다.
- 즉, OAuth 2.0 및 OpenID Connect 환경에서 클라이언트가 JWT의 서명을 검증할 때 필요하다.
예를 들어, 클라이언트가 Authentik(OAuth 제공자)에 로그인 시 Authentik은 비밀키로 서명한 JWT를 전달한다. 서버에서 이를 검증하기 위해서는 Authentik의 공개키로 JWT 서명을 decode 해야 한다.
공개키를 얻고 싶다면?
OAuth2 제공자가 알려준 JWKS URL에 요청을 보내면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 요청에 대한 응답 예시
{
"keys": [
{
"alg": "RS256",
"kid": "83933fac5bbb7f7020fc3bdb6cd41f82",
"kty": "RSA",
"use": "sig",
"n": "qqBcfJMYmiRsAmfMDYpnhz3khRJCOybPSrJbQ3qBNKN9-B8WHBQzXo4PLMDz7EFBMhDq53KhYizR0iPrrQV4q7Kv4HUgevUNQRVW3v...",
"e": "AQAB",
"x5c": ["MIIFUjCCAzqgAwIBAgIQdGqmemY7SZ+EN24+8NaMnTANBgkqhkiG9w0BAQsFADAd..."],
"x5t": "ffC3Ro0WSrgYZ7tSFoPvLWulOPk",
"x5t#S256": "8-ud021Q42R3d74z_JUojq7bpKqpqER_pPzLgCz6Qro"
}
]
}
| 필드명 | 설명 |
|---|---|
alg |
사용된 암호화 알고리즘 (RS256 = RSA SHA-256) |
kid |
키 식별자(Key ID), JWT 헤더의 kid와 매칭됨 |
kty |
키 타입(RSA, EC 등), 여기서는 RSA |
use |
키의 용도 (sig = 서명(Signature), enc = 암호화) |
n |
RSA 공개 키의 모듈러스(Modulus) |
e |
RSA 공개 키의 지수(Exponent) (보통 AQAB = 65537) |
x5c |
X.509 인증서 체인 (Base64 인코딩) |
x5t |
X.509 인증서의 SHA-1 Thumbprint |
x5t#S256 |
X.509 인증서의 SHA-256 Thumbprint |
This post is licensed under
CC BY 4.0
by the author.