Skip to content

πŸ”‘ token-repo(jwt4j-lite) is a lightweight and easy-to-use JWT (JSON Web Token) library for Java and Spring Boot applications. It utilizes the RSA algorithm for secure token signing and verification.

License

Notifications You must be signed in to change notification settings

mon99745/TokenReference

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

TokenReference : jwt4j-lite

jwt4j-lite β€” Java 및 Spring Boot ν™˜κ²½μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” κ²½λŸ‰ν™”λœ JWT(Json Web Token) 라이브러리


The Goal

이 ν”„λ‘œμ νŠΈλŠ” io.jsonwebtoken:jjwt-api 라이브러리λ₯Ό λŒ€μ²΄ν•  수 μžˆλŠ” JwtProvider 역할을 μˆ˜ν–‰ν•˜λ©°,
JWT의 λ°œκΈ‰κ³Ό 검증 λ‘œμ§μ„ μ»€μŠ€ν„°λ§ˆμ΄μ§•ν•  수 μžˆλ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Main Goals:

  • io.jsonwebtoken:jjwt-* 라이브러리λ₯Ό λŒ€μ²΄ κ°€λŠ₯ν•œ κ²½λŸ‰ JWT μ—”μ§„ 제곡
  • μ΅œμ†Œν•œμ˜ μ„€μ •μœΌλ‘œ μ»€μŠ€ν…€ ν΄λ ˆμž„ λ°œκΈ‰ 및 검증 κΈ°λŠ₯ 지원
  • μ†ŒμŠ€μ™€ μ„€μ • 파일의 κ·œκ²©μ„ ν†΅μΌν•˜μ—¬ μ½”λ“œ ν’ˆμ§ˆ 및 가독성 ν–₯상
  • Spring Boot와 μžμ—°μŠ€λŸ½κ²Œ ν†΅ν•©λ˜μ–΄ λΉ λ₯Έ 개발 및 μœ μ§€λ³΄μˆ˜ κ°€λŠ₯

Release

Process

Guides

  1. HTTP Method

    1. API Method List
    2. API Detailed description
      1. 토큰 λ°œν–‰ / Token Issue
      2. 토큰 검증 / Token Verify
      3. 토큰 정보 μΆ”μΆœ / Token claim extraction
  2. Direct Method

    1. Installation
    2. Usage Example
      1. 토큰 λ°œν–‰ / Token Issue
      2. 토큰 검증 / Token Verify
      3. 토큰 정보 μΆ”μΆœ / Token claim extraction
  3. Response Format

    1. 토큰 λ°œν–‰ / Token Issue
    2. 토큰 검증 / Token Verify
    3. 토큰 정보 μΆ”μΆœ / Token claim extraction

HTTP Method

1. API Method List

Method Name HTTP Method Description
api/v1/createToken POST 토큰 λ°œν–‰
api/v1/verifyToken POST 토큰 검증
api/v1/extractClaim POST 토큰 정보 μΆ”μΆœ

3. API Detailed description

a. 토큰 λ°œν–‰ / Token Issue

  • μ‚¬μš©μžμ˜ 정보λ₯Ό 톡해 토큰을 λ°œν–‰ν•œλ‹€.
  • λ©”μ†Œλ“œλͺ… : api/v1/createToken
Request Type Value Description
POST JSONObject JSONObject

1-2) Request Parameters

  • 토큰에 λ‹΄κΈ°λŠ” μ •λ³΄λŠ” ν•„μš”μ— 따라 달라진닀(μ•„λž˜μ˜ ν•„λ“œλ„ μ‚¬μš©ν•˜μ§€ μ•Šμ•„λ„ 무관)
Key Value Description
ci String ꡬ뢄 μ½”λ“œ κ°’
role String μ‚¬μš©μž κΆŒν•œ
username String μ‚¬μš©μž 아이디
password String μ‚¬μš©μž νŒ¨μŠ€μ›Œλ“œ
(평문/μ•”ν˜Έλ¬Έ 무관)
... Primitive Types μ‚¬μš©μž 정보
{
  "ci": "12345678",
  "role" : "user",
  "username" : "test_user",
  "password" : "[VK+SJA26vJFCuDL/kPYAQ073GZTmTOpAbi5izZ10AFx3NlDDW6brVoBOeFlfA5hxHeOQw+Pz+M/XN.."
}

b. 토큰 검증 / Token Verify

  • μ‚¬μš©μžμ˜ 토큰을 κ²€μ¦ν•œλ‹€.
  • λ©”μ†Œλ“œλͺ… : api/v1/verifyToken
Request Type Value Description
POST JSONObject JSONObject

1-2) Request Parameters

Key Value Description
jwt String 토큰 κ°’
{
    "jwt": "e29JzDyi.mwVQotk9DFqLwPpLw8TutiwiX6x4XQUrYtngFyoC7VPVs1txq54NGuzWbHt12rGbA6nnetYSnAinJRpVRzjyXj3GogWjwb2FMeYPshrZFhpaVvJFy2g39FcNusGHoHH5uBcmdEvme6g2crSuNKXbtsaREbakFtGu4oCk7CuVvz1XoAoc43Lc1hAbdU2VReEF7wxsKYQQLk.Ou+L/qyvpu8ssLpZ+qtDOYRQvHEcT/Qvq86KPapmXugS3SvZPnTnZdjzAB+Kcfd+bZX+OjXMBprUQHId25oD5OVK9XVq+3p839qpiJrbdYx6jWG7R5FhlQzQsH2CZezizUEkUlpc5Q38CNN3eJEZAOkO0TXhyMSyUkKyrMVDdVcLdJEzEXTVhwIICfG/+JCziI7/ijqBfSlGE4yB+14tfV2Ks2LdjfXf65zphz1Wm43oP2jzPFvreKta1twUKvhzKLAiYsxMD+kuL14zOJvYQJlnGozZG4rJT8qZUEVMglbCuoeqmXzmAUSGOcg6uaIN2/uPFT4oOgkmAkC5bvKw2g=="
}

c. 토큰 정보 μΆ”μΆœ / Token claim extraction

  • μ‚¬μš©μžμ˜ 토큰을 톡해 λ‚΄λΆ€ 정보λ₯Ό μΆ”μΆœν•œλ‹€.
  • ν•΄λ‹Ή 토큰은 만료 여뢀와 관계없이 μ„œλͺ… κ²€μ¦λ§Œ ν†΅κ³Όν•˜λ©΄ λ‚΄λΆ€ 정보(Claim)을 μΆ”μΆœν•  수 μžˆλ‹€.
  • λ©”μ†Œλ“œλͺ… : api/v1/extractClaim
Request Type Value Description
POST JSONObject JSONObject

1-2) Request Parameters

Key Value Description
jwt String 토큰 κ°’
{
    "jwt": "e29JzDyi.mwVQotk9DFqLwPpLw8TutiwiX6x4XQUrYtngFyoC7VPVs1txq54NGuzWbHt12rGbA6nnetYSnAinJRpVRzjyXj3GogWjwb2FMeYPshrZFhpaVvJFy2g39FcNusGHoHH5uBcmdEvme6g2crSuNKXbtsaREbakFtGu4oCk7CuVvz1XoAoc43Lc1hAbdU2VReEF7wxsKYQQLk.Ou+L/qyvpu8ssLpZ+qtDOYRQvHEcT/Qvq86KPapmXugS3SvZPnTnZdjzAB+Kcfd+bZX+OjXMBprUQHId25oD5OVK9XVq+3p839qpiJrbdYx6jWG7R5FhlQzQsH2CZezizUEkUlpc5Q38CNN3eJEZAOkO0TXhyMSyUkKyrMVDdVcLdJEzEXTVhwIICfG/+JCziI7/ijqBfSlGE4yB+14tfV2Ks2LdjfXf65zphz1Wm43oP2jzPFvreKta1twUKvhzKLAiYsxMD+kuL14zOJvYQJlnGozZG4rJT8qZUEVMglbCuoeqmXzmAUSGOcg6uaIN2/uPFT4oOgkmAkC5bvKw2g=="
}

Direct Method

1. Installation

// Gradle
implementation 'jwt4j-lite-*.jar'

2. Usage Example

import java.util.HashMap;
import java.util.Map;

public class JwtExample {
    public static void main(String[] args) {
        // ========================
        // 1. Create JWT
        // ========================
        Map<String, String> claims = new HashMap<>();
        claims.put("userId", "user123");
        claims.put("role", "ADMIN");

        try {
            CreateTokenResponse createResponse = tokenService.createJwt(claims);
            String jwtToken = createResponse.getJwt();
            System.out.println("Generated JWT: " + jwtToken);

            // ========================
            // 2. Verify JWT
            // ========================
            VerifyTokenResponse verifyResponse = tokenService.verifyJwt(jwtToken);
            System.out.println("Verification result: " + verifyResponse.getResultMsg());

            // ========================
            // 3. Extract Claims
            // ========================
            ExtractClaimResponse claimResponse = tokenService.extractClaimToJwt(jwtToken);
            System.out.println("Extracted Claims: " + claimResponse.getClaims());

        } catch (TokenException e) {
            System.err.println("Token error: " + e.getErrorCode() + " - " + e.getMessage());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3. Response Format

1. 토큰 λ°œν–‰ / Token Issue

Key Value Description
claim Map<String, String> 토큰 정보 ν¬ν•¨λ˜λŠ” 데이터
jwt String 토큰
resultCode String κ²°κ³Ό μ½”λ“œ
resultMsg String κ²°κ³Ό λ©”μ‹œμ§€
{
   "claim": {
      "ci": "12345678",
      "role": "user",
      "username": "test_user",
      "password": "[VK+SJA26vJFCuDL/kPYAQ073GZTmTOpAbi5izZ10AFx3NlDDW6brVoBOeFlfA5hxHeOQw+Pz+M/XN.."
   },
   "jwt": "e29JzDyi.mwVQotk9DFqLwPpLw8TutiwiX6x4XQUrYtngFyoC7VPVs1txq54NGuzWbHt12rGbA6nnetYSnAinJRpVRzjyXj3GogWjwb2FMeYPshrZFhpaVvJFy2g39FcNusGHoHH5uBcmdEvme6g2crSuNKXbtsaREbakFtGu4oCk7CuVvz1XoAoc43Lc1hAbdU2VReEF7wxsKYQQLk.Ou+L/qyvpu8ssLpZ+qtDOYRQvHEcT/Qvq86KPapmXugS3SvZPnTnZdjzAB+Kcfd+bZX+OjXMBprUQHId25oD5OVK9XVq+3p839qpiJrbdYx6jWG7R5FhlQzQsH2CZezizUEkUlpc5Q38CNN3eJEZAOkO0TXhyMSyUkKyrMVDdVcLdJEzEXTVhwIICfG/+JCziI7/ijqBfSlGE4yB+14tfV2Ks2LdjfXf65zphz1Wm43oP2jzPFvreKta1twUKvhzKLAiYsxMD+kuL14zOJvYQJlnGozZG4rJT8qZUEVMglbCuoeqmXzmAUSGOcg6uaIN2/uPFT4oOgkmAkC5bvKw2g==",
   "resultCode": "200",
   "resultMsg": "Success"
}

2. 토큰 검증 / Token Verify

Key Value Description
claim Map<String, String> 토큰 정보 ν¬ν•¨λ˜λŠ” 데이터
jwt String 토큰
resultCode String κ²°κ³Ό μ½”λ“œ
resultMsg String κ²°κ³Ό λ©”μ‹œμ§€
{
   "claim": {
      "ci": "12345678",
      "role": "user",
      "username": "test_user",
      "password": "[VK+SJA26vJFCuDL/kPYAQ073GZTmTOpAbi5izZ10AFx3NlDDW6brVoBOeFlfA5hxHeOQw+Pz+M/XN.."
   },
   "jwt": "e29JzDyi.mwVQotk9DFqLwPpLw8TutiwiX6x4XQUrYtngFyoC7VPVs1txq54NGuzWbHt12rGbA6nnetYSnAinJRpVRzjyXj3GogWjwb2FMeYPshrZFhpaVvJFy2g39FcNusGHoHH5uBcmdEvme6g2crSuNKXbtsaREbakFtGu4oCk7CuVvz1XoAoc43Lc1hAbdU2VReEF7wxsKYQQLk.Ou+L/qyvpu8ssLpZ+qtDOYRQvHEcT/Qvq86KPapmXugS3SvZPnTnZdjzAB+Kcfd+bZX+OjXMBprUQHId25oD5OVK9XVq+3p839qpiJrbdYx6jWG7R5FhlQzQsH2CZezizUEkUlpc5Q38CNN3eJEZAOkO0TXhyMSyUkKyrMVDdVcLdJEzEXTVhwIICfG/+JCziI7/ijqBfSlGE4yB+14tfV2Ks2LdjfXf65zphz1Wm43oP2jzPFvreKta1twUKvhzKLAiYsxMD+kuL14zOJvYQJlnGozZG4rJT8qZUEVMglbCuoeqmXzmAUSGOcg6uaIN2/uPFT4oOgkmAkC5bvKw2g==",
   "resultCode": "200",
   "resultMsg": "Success"
}

3. 토큰 정보 μΆ”μΆœ / Token claim extraction

Key Value Description
jwt String 토큰
resultCode String κ²°κ³Ό μ½”λ“œ
resultMsg String κ²°κ³Ό λ©”μ‹œμ§€
{
   "claim": {
      "ci": "12345678",
      "role": "user",
      "username": "test_user",
      "password": "[VK+SJA26vJFCuDL/kPYAQ073GZTmTOpAbi5izZ10AFx3NlDDW6brVoBOeFlfA5hxHeOQw+Pz+M/XN.."
   },
   "jwt": "e29JzDyi.mwVQotk9DFqLwPpLw8TutiwiX6x4XQUrYtngFyoC7VPVs1txq54NGuzWbHt12rGbA6nnetYSnAinJRpVRzjyXj3GogWjwb2FMeYPshrZFhpaVvJFy2g39FcNusGHoHH5uBcmdEvme6g2crSuNKXbtsaREbakFtGu4oCk7CuVvz1XoAoc43Lc1hAbdU2VReEF7wxsKYQQLk.Ou+L/qyvpu8ssLpZ+qtDOYRQvHEcT/Qvq86KPapmXugS3SvZPnTnZdjzAB+Kcfd+bZX+OjXMBprUQHId25oD5OVK9XVq+3p839qpiJrbdYx6jWG7R5FhlQzQsH2CZezizUEkUlpc5Q38CNN3eJEZAOkO0TXhyMSyUkKyrMVDdVcLdJEzEXTVhwIICfG/+JCziI7/ijqBfSlGE4yB+14tfV2Ks2LdjfXf65zphz1Wm43oP2jzPFvreKta1twUKvhzKLAiYsxMD+kuL14zOJvYQJlnGozZG4rJT8qZUEVMglbCuoeqmXzmAUSGOcg6uaIN2/uPFT4oOgkmAkC5bvKw2g==",
   "resultCode": "200",
   "resultMsg": "Success"
}

About

πŸ”‘ token-repo(jwt4j-lite) is a lightweight and easy-to-use JWT (JSON Web Token) library for Java and Spring Boot applications. It utilizes the RSA algorithm for secure token signing and verification.

Topics

Resources

License

Stars

Watchers

Forks

Languages