Skip to content

mon99745/TokenReference

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

144 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

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

๐Ÿ”‘ This project provides a lightweight JWT authentication library for Java and Spring Boot applications, offering secure token signing and verification through RSA-based cryptographic operations.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages