Spring Security - JWK

TopOfTheHead·2025년 11월 23일

Spring Security

목록 보기
15/21

JWK ( JSON Web Key )
Public Key 정보를 JSON Format으로 표현한 데이터구조.
JWT Signature의 검증을 수행하기 위해서 Public Key가 필요하므로 주로 RSA방식의 JWTSignature를 검증 시 활용.

  • JWK Set :
    。여러개의 Public Key를 포함하는 Public Key Set

  • JWK Set URI :
    JWK Set을 제공하는 URI
    JWT발행자검증자Public Key를 안전하게 공유하고 사용하는 용도로 이용됨.

JWK 사용 용도

  • JWK Set URI를 통한 JWK Set 제공
    Authentication ServerURI 접속 시 JWK Set를 제공하여 ClientJWK Signature를 검증할 수 있도록 함.
    ex ) https://example.com/oauth2/jwks :
    OAuth 2.0 Authentication Server가 제공하는 Public Key 목록.

  • JWT Signature 검증
    JWT를 사용하는경우, 서명검증을 수행하기 위해 Public Key가 필요하므로, JWK를 사용하여 안전하게 Public Key를 참조.

  • 자동화 Key 관리
    Public KeyJWK로 제공 시 여러 서버Public Key를 쉽게 공유갱신이 가능.

JWK 구조

{
  "kty": "RSA",
  "kid": "1234abcd",
  "use": "sig",
  "alg": "RS256",
  "n": "modulus_in_base64url",
  "e": "exponent_in_base64url"
}
  • kty ( Key Type ) :
    Public KeyType을 지시 ( ex. RSA, EC )
    Public Key의 알고리즘 식별 시 필요

    KeyPairGenerator.getInstance("RSA")를 통해 지정됨

  • kid ( Key ID ) :
    Public Key의 고유 식별자
    JWK Set으로 여러 개의 Public Key를 제공하는 경우 식별용도로 활용

    RSAKey객체.keyId("ID문자열")을 통해 지정됨

  • use ( Key Use ) :
    Public Key의 용도를 지시.
    ex ) "use" : "sig" : 서명용 , "use" : "enc" : 암호화용 등.
    JWT는 주로 Signature의 검증으로 사용하므로 sig가 활용됨.

  • alg ( Algorithm ) :
    Public Key를 사용할 알고리즘을 지정 ( ex. RS256, RS512, ES256 )
    JWT Signature를 검증 시 사용할 알고리즘을 지정.

  • n ( Modulus ) :
    RSA Public Key에서 사용되는 Modulus값을 base64로 인코딩하여 설정.
    RSA에서 Public Key의 유효성을 결정하는 핵심요소.

  • e ( Exponent ) :
    RSA Public Key에서 사용되는 지수값을 base64로 인코딩하여 설정.
profile
공부기록 블로그

0개의 댓글