인터페이스

Version : 1.1 / Update : 2025.10.29

1. 개요

JWT HTTP REST API Service의 사용자 인터페이스에 대한 정의한다. JWT HTTP REST API Service는 HTTP 기반의 RESTful API를 제공한다.

JWT HTTP REST API Service는 인증을 위하여 다음의 두 가지 방법의 인증을 제공한다.

  1. TLS 인증(HTTPS): 설정에 따라 인증 없음, 서버 인증, 상호 인증의 기능을 제공한다.

  2. API 인증: 사용하는 클라이언트의 인증을 위해 사용한다.


2. 설정 파일

2-1. 프로그램 실행 옵션

JWT REST API Service 프로그램은 실행시 프로그램 실행의 동일 경로에서 config.json 파일을 찾는다. config.json 파일의 위치를 변경하여 지정하고 싶은 경우는 프로그램 실행 인자로 -config 옵션을 통해서 이를 변경 할 수 있다.

프로그램 실행 예시

% key4cJWTServer -config /opt/key4c/etc/config.json

프로그램의 버전을 확인하고 싶은 경우 -version 옵션을 실행하면, 프로그램의 버전 확인이 가능하다.

프로그램 버전 확인 실행 예시

% key4cJWTServer -version
key4cJWTServer Version 1.0.0

2-2. 설정 파일

프로그램에 사용되는 설정 파일은 다음과 같은 구조를 가지고 있다.

depth1
depth2
depth3
필수 여부
설명

server

ip

필수

JWT 서비스를 허용할 IP(""으로 설정하면 모두 허용)

port

필수

JWT 서비스에서 사용할 port

tlsOptions

tlsType

필수

JWT 서비스에 사용할 HTTP 보안 옵션 유효 값 범위 - 0: TLS 없음 - 1: TLS Server Only - 2: mTLS between Client and Server 해당 옵션이 1 또는 2인 경우, 같은 레이서의 caCertFile, certFile, keyFile 값은 필수 이다.

caCertFile

조건부 필수

tlsType 설명 참조

certFile

조건부 필수

tlsType 설명 참조

keyFile

조건부 필수

tlsType 설명 참조

key4c

uuid

필수

key4c 웹 콘솔에서 표기된 HSM Token의 uuid

pin

필수

HSM 사용을 위한 PIN 값

apiKey

필수

key4c 서비스를 사용하기 위한 apiKey

jwt

issuer

필수

JWT 발급자 정보로 사용하기 위한 값

appConfig

logFile

선택

값이 없으면 stdout으로만 출력

설정 파일 예시


3. 인터페이스

3-1. HTTP Header 공통

Key
Value
Optional
Description

Content-Type

Application/json

Mandatory

데이터 송수신에 사용하는 데이터는 JSON 타입으로 지정한다.

3-2. JWT 서명 요청

Request

Request Body

Key
Data Type
Optional
Description

ckaId

string

Mandatory

JWT를 사용하기 위한 키의 CKA_ID 값

signAlg

string

Conditional

RSA 키의 경우 signAlg을 지정해야 함. - 선택할 수 있는 값: RSA, RSA-PSS ECC 키의 경우 singAlg 값 고정. - 고정값 : ECC

hash

string

Conditional

RSA 키의 경우 아래 3가지 hash 중 1 선택 입력 필수. - sha256, sha384, sha512 ECC키의 경우 키 설정에 따라가며, 입력값은 무시. - prime256v1 (P-256) -> sha256

subject

string

Mandatory

JWT를 사용할 주체의 이름

aliveHours

integer

Mandatory

JWT 토큰 유효 시각, default=0

aliveMinutes

integer

Mandatory

JWT 토큰 유효 분, default=0

alibeSeconds

integer

Mandatory

JWT 토큰 유효 초, default=0

claims

map

Optional

Key-Value 형태의 map 데이터 Claims.

Request Body Example

Response Body

Key
Data Type
Optional
Description

time

date

Mandatory

GTM+9 date time string

code

integer

Mandatory

- 0: success - 1: invalid parameters - 2: server error

message

string

Mandatory

error message

token

string

Optional

when code is 0, token will returns JWT token

Response Body Example

3-3. JWT 공개키 요청

Request

Request Example

Response Body

Key
Data Type
Optional
Description

time

date

Mandatory

GTM+9 date time string

code

integer

Mandatory

- 0: success - 1: invalid parameters - 2: server error

message

string

Mandatory

error message

publicKey

string

Optional

when code is 0, publicKey will returns Public Key

Response Body Example

4. JWT

4-1. JWT 구조

구성요소
역할
포함정보
기타

Header

알고리즘, 타입

alg, typ

Payload

데이터

exp, iss, iat, nbf, sub, claims

민감 정보 금지

Signature

위조 방지

서명값

base64(header) + '.' + base64(payload)를 개인키로 서명한 값

Decoded header Example

Name
Description

alg

토근 서명 알고리즘 (RS256: RSA + SHA256, PS256: RSA-PSS + SHA256, ES256: ECC + SHA256)

type

토큰의 타입

Decoded payload Example

Name
Description

exp

토큰 만료 시각

iat

토큰 발급 시각

nbf

토큰 유효 시작 시각

iss

토큰 발급자

sub

토큰의 주제

그 외

사용자 정의 데이터