JWKS(JSON Web Key Set)
: 공개 키(Public Key) 정보를 제공하는 JSON 형식의 표준 포맷이다.
이는 JWT(JSON Web Token)의 서명을 검증할 때 사용되며, 보통 OAuth 2.0 및 OpenID Connect(OIDC) 환경에서 활용된다.
예를 들어, 클라이언트가 Authentik(OAuth 제공자)에 로그인 시 Authentik은 비밀키로 서명한 JWT를 전달한다.
서버에서 이를 검증하기 위해서는 Authentik의 공개키로 JWT 서명을 decode 해야 한다.
공개키를 얻고 싶다면?
OAuth2 제공자가 알려준 JWKS URL에 요청을 보내면 된다.
// 요청에 대한 응답 예시
{
"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 |