JWK 구조
{
"kty": "RSA",
"kid": "1234abcd",
"use": "sig",
"alg": "RS256",
"n": "modulus_in_base64url",
"e": "exponent_in_base64url"
}
kty ( Key Type ) :
。Public Key의 Type을 지시 ( 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로 인코딩하여 설정.