An open API service indexing awesome lists of open source software.

https://github.com/mon99745/tokenreference

πŸ”‘ Reference for issuing and verifying JWT tokens using RSA
https://github.com/mon99745/tokenreference

base58 hash jwt pki privatekey publickey rsa sha256 token

Last synced: 4 days ago
JSON representation

πŸ”‘ Reference for issuing and verifying JWT tokens using RSA

Awesome Lists containing this project

README

          

# Json Web Token, JwtsReference
이 ν”„λ‘œμ νŠΈλŠ” io.jsonwebtoken:jjwt-api 라이브러리λ₯Ό λŒ€μ²΄ν•˜μ—¬ JwtProvider 역할을 μˆ˜ν–‰ν•˜λŠ” λͺ©μ μœΌλ‘œ μž‘μ„±λœ 결과물이며,
Json Web Token을 μ»€μŠ€ν…€ λ°œν–‰ 및 κ²€μ¦ν•˜μ—¬ κ΄€λ ¨ μΉ΄ν…Œκ³ λ¦¬ 개발의 μ‹œκ°„ λΉ„μš©μ„ μ ˆκ°ν•˜κ³ , ν”„λ‘œμ νŠΈμ˜ μ†ŒμŠ€μ™€ μ„€μ • 파일의 κ·œκ²©μ„ ν†΅μΌν•˜μ—¬ μ½”λ“œμ˜ ν’ˆμ§ˆκ³Ό 가독성 ν–₯μƒν•˜κΈ° μœ„ν•œ λͺ©ν‘œλ‘œ 증가 μ‹œν‚€κΈ° μœ„ν•œ λͺ©ν‘œλ‘œ μΆ”μ§„ν•œλ‹€.

The ultimate goal:
* Json Web Token λ°œκΈ‰μ— ν•„μš”ν•œ 라이브러리 `io.jsonwebtoken:jjwt-*` λ₯Ό λŒ€μ²΄ κ°€λŠ₯ν•˜λ„λ‘ ν•œλ‹€.
* Json Web Token λ°œκΈ‰κ³Ό 검증에 μ΅œμ†Œν•œμ˜ 정보λ₯Ό λ‹΄μ•„ μ»€μŠ€ν…€ μ‚¬μš©μ„±μ„ ν™•μž₯ν•˜κ³ , 이λ₯Ό μš©μ΄ν•˜λ„λ‘ ν•œλ‹€.

# Release
- [v1.2.0](./RELEASENOTE.md#v100-2025-09-12-) `-ing`
- [v1.1.0](./RELEASENOTE.md#v100-2024-04-24-)
- [v1.0.0](./RELEASENOTE.md#v100-2024-01-30-)

# Process
![](doc/README_20250121_page-0001.jpg)
![](doc/README_20250121_page-0002.jpg)
![](doc/README_20250121_page-0003.jpg)

# Guides
1. HTTP 톡신 방식 (API 호좜)
1. API 호좜 κ°€μ΄λ“œ
2. API Method List
3. API Response Format
4. API 상세섀λͺ…
1. 토큰 λ°œν–‰
2. 토큰 검증
3. 토큰 정보 μΆ”μΆœ

[//]: # (1. JAR 라이브러리 호좜 방식 )

[//]: # ( 1. JAR 라이브러리 호좜 κ°€μ΄λ“œ)

[//]: # ( 2. Service Method List )

[//]: # ( 3. Service Response Format )

[//]: # ( 4. Service 상세섀λͺ…)

[//]: # ( 1. 토큰 λ°œν–‰)

[//]: # ( 2. 토큰 검증)

[//]: # ( 3. 토큰 정보 μΆ”μΆœ)

## HTTP 톡신 방식 (API 호좜)
### 1. API 호좜 κ°€μ΄λ“œ
- ν•΄λ‹Ή ν”„λ‘œμ νŠΈλ₯Ό λ…λ¦½μ μœΌλ‘œ κ΅¬μ„±ν•˜μ—¬ HTTP ν†΅μ‹ ν•˜μ—¬ ν•΄λ‹Ή κΈ°λŠ₯을 μˆ˜ν–‰.

### 2. API Method List

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

### 3. API Response Format
| Key | Value | Description |
|------------|-------|----------------------------------|
| claim | Map | 토큰 정보 ν¬ν•¨λ˜λŠ” 데이터
(토큰 검증 μ‹œ μ œμ™Έ) |
| jwt | String | 토큰 |
| resultCode | String | κ²°κ³Ό μ½”λ“œ |
| resultMsg | String | κ²°κ³Ό λ©”μ‹œμ§€ |
```json
{
"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"
}
```
### 4. API 상세섀λͺ…
#### a. 토큰 λ°œν–‰
- μ‚¬μš©μžμ˜ 정보λ₯Ό 톡해 토큰을 λ°œν–‰ν•œλ‹€.
- **λ©”μ†Œλ“œλͺ… : 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 | μ‚¬μš©μž 정보 |

```json
{
"ci": "12345678",
"role" : "user",
"username" : "test_user",
"password" : "[VK+SJA26vJFCuDL/kPYAQ073GZTmTOpAbi5izZ10AFx3NlDDW6brVoBOeFlfA5hxHeOQw+Pz+M/XN.."
}
```

#### b. 토큰 검증
- μ‚¬μš©μžμ˜ 토큰을 κ²€μ¦ν•œλ‹€.
- **λ©”μ†Œλ“œλͺ… : api/v1/verifyToken**

| Request Type | Value | Description |
|--------------|--------|-------------|
| POST | JSONObject | JSONObject |

#### 1-2) Request Parameters

| Key | Value | Description |
|-----|-----------|-------------|
| jwt | String | 토큰 κ°’ |

```json
{
"jwt": "e29JzDyi.mwVQotk9DFqLwPpLw8TutiwiX6x4XQUrYtngFyoC7VPVs1txq54NGuzWbHt12rGbA6nnetYSnAinJRpVRzjyXj3GogWjwb2FMeYPshrZFhpaVvJFy2g39FcNusGHoHH5uBcmdEvme6g2crSuNKXbtsaREbakFtGu4oCk7CuVvz1XoAoc43Lc1hAbdU2VReEF7wxsKYQQLk.Ou+L/qyvpu8ssLpZ+qtDOYRQvHEcT/Qvq86KPapmXugS3SvZPnTnZdjzAB+Kcfd+bZX+OjXMBprUQHId25oD5OVK9XVq+3p839qpiJrbdYx6jWG7R5FhlQzQsH2CZezizUEkUlpc5Q38CNN3eJEZAOkO0TXhyMSyUkKyrMVDdVcLdJEzEXTVhwIICfG/+JCziI7/ijqBfSlGE4yB+14tfV2Ks2LdjfXf65zphz1Wm43oP2jzPFvreKta1twUKvhzKLAiYsxMD+kuL14zOJvYQJlnGozZG4rJT8qZUEVMglbCuoeqmXzmAUSGOcg6uaIN2/uPFT4oOgkmAkC5bvKw2g=="
}
```

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

| Request Type | Value | Description |
|--------------|--------|-------------|
| POST | JSONObject | JSONObject |

#### 1-2) Request Parameters

| Key | Value | Description |
|-----|-----------|-------------|
| jwt | String | 토큰 κ°’ |

```json
{
"jwt": "e29JzDyi.mwVQotk9DFqLwPpLw8TutiwiX6x4XQUrYtngFyoC7VPVs1txq54NGuzWbHt12rGbA6nnetYSnAinJRpVRzjyXj3GogWjwb2FMeYPshrZFhpaVvJFy2g39FcNusGHoHH5uBcmdEvme6g2crSuNKXbtsaREbakFtGu4oCk7CuVvz1XoAoc43Lc1hAbdU2VReEF7wxsKYQQLk.Ou+L/qyvpu8ssLpZ+qtDOYRQvHEcT/Qvq86KPapmXugS3SvZPnTnZdjzAB+Kcfd+bZX+OjXMBprUQHId25oD5OVK9XVq+3p839qpiJrbdYx6jWG7R5FhlQzQsH2CZezizUEkUlpc5Q38CNN3eJEZAOkO0TXhyMSyUkKyrMVDdVcLdJEzEXTVhwIICfG/+JCziI7/ijqBfSlGE4yB+14tfV2Ks2LdjfXf65zphz1Wm43oP2jzPFvreKta1twUKvhzKLAiYsxMD+kuL14zOJvYQJlnGozZG4rJT8qZUEVMglbCuoeqmXzmAUSGOcg6uaIN2/uPFT4oOgkmAkC5bvKw2g=="
}
```