์ด ํ๋ก์ ํธ๋ io.jsonwebtoken:jjwt-api ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์ฒดํ์ฌ JwtProvider ์ญํ ์ ์ํํ๋ ๋ชฉ์ ์ผ๋ก ์์ฑ๋ ๊ฒฐ๊ณผ๋ฌผ์ด๋ฉฐ, Json Web Token์ ์ปค์คํ ๋ฐํ ๋ฐ ๊ฒ์ฆํ์ฌ ๊ด๋ จ ์นดํ ๊ณ ๋ฆฌ ๊ฐ๋ฐ์ ์๊ฐ ๋น์ฉ์ ์ ๊ฐํ๊ณ , ํ๋ก์ ํธ์ ์์ค์ ์ค์ ํ์ผ์ ๊ท๊ฒฉ์ ํต์ผํ์ฌ ์ฝ๋์ ํ์ง๊ณผ ๊ฐ๋ ์ฑ ํฅ์ํ๊ธฐ ์ํ ๋ชฉํ๋ก ์ฆ๊ฐ ์ํค๊ธฐ ์ํ ๋ชฉํ๋ก ์ถ์งํ๋ค.
The ultimate goal:
- Json Web Token ๋ฐ๊ธ์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
io.jsonwebtoken:jjwt-*
๋ฅผ ๋์ฒด ๊ฐ๋ฅํ๋๋ก ํ๋ค. - Json Web Token ๋ฐ๊ธ๊ณผ ๊ฒ์ฆ์ ์ต์ํ์ ์ ๋ณด๋ฅผ ๋ด์ ์ปค์คํ ์ฌ์ฉ์ฑ์ ํ์ฅํ๊ณ , ์ด๋ฅผ ์ฉ์ดํ๋๋ก ํ๋ค.
- HTTP ํต์ ๋ฐฉ์ (API ํธ์ถ)
- API ํธ์ถ ๊ฐ์ด๋
- API Method List
- API Response Format
- API ์์ธ์ค๋ช
- ํ ํฐ ๋ฐํ
- ํ ํฐ ๊ฒ์ฆ
- ํ ํฐ ์ ๋ณด ์ถ์ถ
- ํด๋น ํ๋ก์ ํธ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ตฌ์ฑํ์ฌ HTTP ํต์ ํ์ฌ ํด๋น ๊ธฐ๋ฅ์ ์ํ.
Method Name | HTTP Method | Description |
---|---|---|
api/v1/createToken | POST | ํ ํฐ ๋ฐํ |
api/v1/verifyToken | POST | ํ ํฐ ๊ฒ์ฆ |
api/v1/extractClaim | POST | ํ ํฐ ์ ๋ณด ์ถ์ถ |
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"
}
- ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ํตํด ํ ํฐ์ ๋ฐํํ๋ค.
- ๋ฉ์๋๋ช : api/v1/createToken
Request Type | Value | Description |
---|---|---|
POST | JSONObject | JSONObject |
- ํ ํฐ์ ๋ด๊ธฐ๋ ์ ๋ณด๋ ํ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค(์๋์ ํ๋๋ ์ฌ์ฉํ์ง ์์๋ ๋ฌด๊ด)
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.."
}
- ์ฌ์ฉ์์ ํ ํฐ์ ๊ฒ์ฆํ๋ค.
- ๋ฉ์๋๋ช : api/v1/verifyToken
Request Type | Value | Description |
---|---|---|
POST | JSONObject | JSONObject |
Key | Value | Description |
---|---|---|
jwt | String | ํ ํฐ ๊ฐ |
{
"jwt": "e29JzDyi.mwVQotk9DFqLwPpLw8TutiwiX6x4XQUrYtngFyoC7VPVs1txq54NGuzWbHt12rGbA6nnetYSnAinJRpVRzjyXj3GogWjwb2FMeYPshrZFhpaVvJFy2g39FcNusGHoHH5uBcmdEvme6g2crSuNKXbtsaREbakFtGu4oCk7CuVvz1XoAoc43Lc1hAbdU2VReEF7wxsKYQQLk.Ou+L/qyvpu8ssLpZ+qtDOYRQvHEcT/Qvq86KPapmXugS3SvZPnTnZdjzAB+Kcfd+bZX+OjXMBprUQHId25oD5OVK9XVq+3p839qpiJrbdYx6jWG7R5FhlQzQsH2CZezizUEkUlpc5Q38CNN3eJEZAOkO0TXhyMSyUkKyrMVDdVcLdJEzEXTVhwIICfG/+JCziI7/ijqBfSlGE4yB+14tfV2Ks2LdjfXf65zphz1Wm43oP2jzPFvreKta1twUKvhzKLAiYsxMD+kuL14zOJvYQJlnGozZG4rJT8qZUEVMglbCuoeqmXzmAUSGOcg6uaIN2/uPFT4oOgkmAkC5bvKw2g=="
}
- ์ฌ์ฉ์์ ํ ํฐ์ ํตํด ๋ด๋ถ ์ ๋ณด๋ฅผ ์ถ์ถํ๋ค.
- ํด๋น ํ ํฐ์ ๋ง๋ฃ ์ฌ๋ถ์ ๊ด๊ณ์์ด ์๋ช ๊ฒ์ฆ๋ง ํต๊ณผํ๋ฉด ๋ด๋ถ ์ ๋ณด(ํด๋ ์)์ ์ถ์ถํ ์ ์๋ค.
- ๋ฉ์๋๋ช : api/v1/extractClaim
Request Type | Value | Description |
---|---|---|
POST | JSONObject | JSONObject |
Key | Value | Description |
---|---|---|
jwt | String | ํ ํฐ ๊ฐ |
{
"jwt": "e29JzDyi.mwVQotk9DFqLwPpLw8TutiwiX6x4XQUrYtngFyoC7VPVs1txq54NGuzWbHt12rGbA6nnetYSnAinJRpVRzjyXj3GogWjwb2FMeYPshrZFhpaVvJFy2g39FcNusGHoHH5uBcmdEvme6g2crSuNKXbtsaREbakFtGu4oCk7CuVvz1XoAoc43Lc1hAbdU2VReEF7wxsKYQQLk.Ou+L/qyvpu8ssLpZ+qtDOYRQvHEcT/Qvq86KPapmXugS3SvZPnTnZdjzAB+Kcfd+bZX+OjXMBprUQHId25oD5OVK9XVq+3p839qpiJrbdYx6jWG7R5FhlQzQsH2CZezizUEkUlpc5Q38CNN3eJEZAOkO0TXhyMSyUkKyrMVDdVcLdJEzEXTVhwIICfG/+JCziI7/ijqBfSlGE4yB+14tfV2Ks2LdjfXf65zphz1Wm43oP2jzPFvreKta1twUKvhzKLAiYsxMD+kuL14zOJvYQJlnGozZG4rJT8qZUEVMglbCuoeqmXzmAUSGOcg6uaIN2/uPFT4oOgkmAkC5bvKw2g=="
}