๐จ JWT
JWT๋ JSON Web Token์ ์ฝ์๋ก ๋น์ฌ์ ๊ฐ์ ์ ๋ณด๋ฅผ JSON ๊ฐ์ฒด๋ก ์์ ํ๊ฒ ์ ์กํ๊ธฐ ์ํ ๊ฐ๊ฒฐํ๊ณ ์์ฒด ํฌํจ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ ๊ฐ๋ฐฉํ ํ์ค์ด๋ค. ์ด ์ ๋ณด๋ ๋์งํธ ์๋ช ๋์ด ์์ผ๋ฏ๋ก ํ์ธํ๊ณ ์ ๋ขฐํ ์ ์๋ค. JWT๋ ๋น๋ฐ( HMAC ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ) ๋๋ RSA ๋ฅผ ์ฌ์ฉํ๋ ๊ณต๊ฐ/๊ฐ์ธ ํค๋ฅผ ์ฌ์ฉํ์ฌ ์๋ช ํ ์ ์๋ค.
- Compact : ํฌ๊ธฐ ๋๋ฌธ์ URL, POST ๋งค๊ฐ๋ณ์ ๋๋ HTTP ํค๋ ๋ด๋ถ๋ฅผ ํตํด ๋ณด๋ผ ์ ์๋ค. ๋ํ ํฌ๊ธฐ ๋๋ฌธ์ ์ ์ก ์๋๊ฐ ๋น ๋ฅด๋ค.
- ์์ฒด ํฌํจ : ํ์ด๋ก๋์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ ๋ฒ ์ด์ ์ฟผ๋ฆฌํ์ง ์๋๋ก ์ฌ์ฉ์์ ๋ํ ๋ชจ๋ ํ์ ์ ๋ณด๊ฐ ํฌํจ๋๋ค.
JWT ๊ตฌ์กฐ
JWT๋ ๋ค์๊ณผ ๊ฐ์ด ์ ( )์ผ๋ก ๊ตฌ๋ถ๋ ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
xxxxx.yyyyy.zzzzz
- Header : ํ ํฐ์ ํ์ ๊ณผ ํด์ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ์ฒซ์งธ๋ ํ ํฐ์ ์ ํ (JWT)์ ๋ํ๋ด๊ณ , ๋ ๋ฒ์งธ๋ HMAC, SHA256 ๋๋ RSA์ ๊ฐ์ ํด์ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ๋ด๋ ๋ถ๋ถ์ด๋ค.
- Payload : ํ ํฐ์ ๋ด์ ํด๋ ์(claim) ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์๋ค. Payload ์ ๋ด๋ ์ ๋ณด์ ํ ‘์กฐ๊ฐ’ ์ ํด๋ ์์ด๋ผ๊ณ ๋ถ๋ฅด๊ณ , ์ด๋ name / value ์ ํ ์์ผ๋ก ์ด๋ค์ ธ์๋ค. ํ ํฐ์๋ ์ฌ๋ฌ๊ฐ์ ํด๋ ์ ๋ค์ ๋ฃ์ ์ ์๋ค. ํด๋ ์์ ์ ๋ณด๋ ๋ฑ๋ก๋ (registered) ํด๋ ์, ๊ณต๊ฐ (public) ํด๋ ์, ๋น๊ณต๊ฐ (private) ํด๋ ์์ผ๋ก ์ธ ์ข ๋ฅ๊ฐ ์๋ค.
- Signature: secret key๋ฅผ ํฌํจํ์ฌ ์ํธํ๋์ด ์๋ค.
JWT PROCESS

๐จ API
API๋ Application Programming Interface ์ ์ฝ์๋ก ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ก ํต์ ํ ์ ์๋๋ก ํ๋ ์ํํธ์จ์ด ์ค๊ฐ์์ด๋ค. Facebook๊ณผ ๊ฐ์ ์ฑ์ ์ฌ์ฉํ๊ฑฐ๋ ์ธ์คํดํธ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ฑฐ๋ ํด๋์ ํ๋ก ๋ ์จ๋ฅผ ํ์ธํ ๋๋ง๋ค API๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค.
API๊ฐ ์ฌ์ฉ๋๋ ์ด์
API๋ ๋ฐ์ดํฐ ๊ณต์ ๋ฐ ์ฌ์ ์ ์๋ ํ๋ก์ธ์ค ์คํ์ ์ค์ฌ์ผ๋ก ๊ตฌ์ถ๋ ์ค๊ณ๋ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ๊ป ๊ฐ์ ธ์ค๋ ๋ฐ ํ์ํ๋ค . ๊ทธ๋ค์ ์ค๊ฐ ์ฌ๋์ผ๋ก ์๋ํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ฌ๋๋ค๊ณผ ๊ธฐ์ ์ด ๋งค์ผ ์ฌ์ฉํ๋ ๋ค์ํ ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ์ ์๋ก์ด ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ ์ํธ ์์ฉ์ ๊ตฌ์ถํ ์ ์๋๋ก ํ๋ค.
API ์ ํ
1. private API
: private API๋ ๋ด๋ถ API๋ก, ํ์ฌ ๊ฐ๋ฐ์๊ฐ ์์ฒด ์ ํ๊ณผ ์๋น์ค๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ๋ด๋ถ์ ์ผ๋ก ๋ฐํํ๋ค. ๋ฐ๋ผ์ ์ 3์์๊ฒ ๋
ธ์ถ๋์ง ์๋๋ค.
2. public API
: public API๋ ๊ฐ๋ฐฉํ API๋ก, ๋ชจ๋์๊ฒ ๊ณต๊ฐ๋๋ค. ๋๊ตฌ๋ ์ ํ ์์ด API๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒ ํน์ง์ด๋ค.
3. partner API
:partner API๋ ๊ธฐ์
์ด ๋ฐ์ดํฐ ๊ณต์ ์ ๋์ํ๋ ํน์ ์ธ๋ค๋ง ์ฌ์ฉํ ์ ์๋ค. ๋น์ฆ๋์ค ๊ด๊ณ์์ ์ฌ์ฉ๋๋ ํธ์ด๋ฉฐ, ์ข
์ข
ํํธ๋ ํ์ฌ ๊ฐ์ ์ํํธ์จ์ด๋ฅผ ํตํฉํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
API PROCESS
API ์ํคํ ์ฒ๋ ์ผ๋ฐ์ ์ผ๋ก ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ธก๋ฉด์์ ์ค๋ช ๋ฉ๋๋ค. ์์ฒญ์ ๋ณด๋ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํด๋ผ์ด์ธํธ๋ผ๊ณ ํ๊ณ ์๋ต์ ๋ณด๋ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฒ๋ผ๊ณ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ ์จ ์์์ ๊ธฐ์์ฒญ์ ๋ ์จ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์๋ฒ์ด๊ณ ๋ชจ๋ฐ์ผ ์ฑ์ ํด๋ผ์ด์ธํธ์ ๋๋ค.
API๊ฐ ์์ฑ๋ ์๊ธฐ์ ์ด์ ์ ๋ฐ๋ผ API๋ ๋ค ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์๋ํ ์ ์์ต๋๋ค.
SOAP API
์ด API๋ ๋จ์ ๊ฐ์ฒด ์ ๊ทผ ํ๋กํ ์ฝ์ ์ฌ์ฉํฉ๋๋ค. ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ XML์ ์ฌ์ฉํ์ฌ ๋ฉ์์ง๋ฅผ ๊ตํํฉ๋๋ค. ๊ณผ๊ฑฐ์ ๋ ๋ง์ด ์ฌ์ฉ๋์์ผ๋ฉฐ ์ ์ฐ์ฑ์ด ๋จ์ด์ง๋ API์ ๋๋ค.
RPC API
์ด API๋ฅผ ์๊ฒฉ ํ๋ก์์ ํธ์ถ์ด๋ผ๊ณ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์์ ํจ์๋ ํ๋ก์์ ๋ฅผ ์๋ฃํ๋ฉด ์๋ฒ๊ฐ ์ถ๋ ฅ์ ํด๋ผ์ด์ธํธ๋ก ๋ค์ ์ ์กํฉ๋๋ค.
Websocket API
Websocket API๋ JSON ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ ๋ค๋ฅธ ์ต์ ์น API ๊ฐ๋ฐ์ ๋๋ค. WebSocket API๋ ํด๋ผ์ด์ธํธ ์ฑ๊ณผ ์๋ฒ ๊ฐ์ ์๋ฐฉํฅ ํต์ ์ ์ง์ํฉ๋๋ค. ์๋ฒ๊ฐ ์ฐ๊ฒฐ๋ ํด๋ผ์ด์ธํธ์ ์ฝ๋ฐฑ ๋ฉ์์ง๋ฅผ ์ ์กํ ์ ์์ด REST API๋ณด๋ค ํจ์จ์ ์ ๋๋ค.
REST API
์ค๋๋ ์น์์ ๋ณผ ์ ์๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๊ณ ์ ์ฐํ API์ ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ๋ฐ์ดํฐ๋ก ์ ์กํฉ๋๋ค. ์๋ฒ๊ฐ ์ด ํด๋ผ์ด์ธํธ ์ ๋ ฅ์ ์ฌ์ฉํ์ฌ ๋ด๋ถ ํจ์๋ฅผ ์์ํ๊ณ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ํด๋ผ์ด์ธํธ์ ๋ฐํํฉ๋๋ค.
API ์ฌ์ฉ๋ฐฉ๋ฒ
1.API ํค๋ฅผ ๋ฐ์ต๋๋ค. API ๊ณต๊ธ ์ ์ฒด์ ํ์ธ์ ๋ฐ์ ๊ณ์ ์ ์์ฑํ๋ฉด ๋ฉ๋๋ค.
2.HTTP API ํด๋ผ์ด์ธํธ๋ฅผ ์ค์ ํฉ๋๋ค. ์ด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์์ ๋ API ํค๋ฅผ ์ฌ์ฉํ์ฌ API ์์ฒญ์ ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
3.API ํด๋ผ์ด์ธํธ๊ฐ ์๋ ๊ฒฝ์ฐ API ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ฌ ๋ธ๋ผ์ฐ์ ์์ ์์ฒญ์ ์ง์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
4.์ API ๊ตฌ๋ฌธ์ ์ต์ํด์ง๋ฉด ์ฝ๋์์ ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ ์ ์์ต๋๋ค.
๐จ JWT์ API
JWT | API |
- ํ ํฐ์ด ์์ฒด์ ํฌํจ - API๊ฐ ํธ๋์ญ์ ์ ๋ณดํธํ๊ณ ํ ํฐ ์์ ์์ ๊ถํ์ ๊ฒฐ์ ํ๋ ๋ฐ ํ์ํ ์ ๋ณด๊ฐ ํฌํจ - ์ฌ์ฉ์ ์์ค ์ก์ธ์ค๋ฅผ ์ ๊ณต - ์ฌ์ฉ์์ ๊ถํ์ ๊ฒฐ์ ํ๊ธฐ ์ํด ๋ง๋ฃ ๋ ์ง ๋ฐ ์ฌ์ฉ์ ์๋ณ์์ ๊ฐ์ ์ ๋ณด๊ฐ ํฌํจ๋ ์ ์์ |
- ๊ณ ์ ์ฑ์ ์ฌ์ฉํ์ฌ ์ด๊ธฐ ์ก์ธ์ค ๊ถํ์ ์ป์ - ์ค์ ํ ์ด๋ธ์์ ํค์ ๊ด๋ จ ACL์ ์ฐพ์ ํค๊ฐ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ ๋์์ ์ ํํ ๊ฒฐ์ ํด์ผ ํจ - ์ผ๋ฐ์ ์ผ๋ก API ํค๋ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๋์ผํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ค ๋ณด์๋ง ์ ๊ณต |
๐จ์ถ์ฒ ๋ฐ ์ฐธ๊ณ ์๋ฃ
JWT.IO
JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.
jwt.io
http://www.opennaru.com/opennaru-blog/jwt-json-web-token/
JWT (JSON Web Token) ์ดํดํ๊ธฐ์ ํ์ฉ ๋ฐฉ์ - Opennaru, Inc.
JWT ๋ JSON Web Token์ ์ฝ์๋ก ์ ์ ์๋ช ๋ URL-safe (URL๋ก ์ด์ฉํ ์์๋ ๋ฌธ์ ๋ง ๊ตฌ์ฑ๋)์ JSON์ ๋๋ค.JWT๋ ์์ฑ ์ ๋ณด (Claim)๋ฅผ JSON ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ํํํ ํ ํฐ์ผ๋ก RFC7519 ํ์ค ์ ๋๋ค.
www.opennaru.com
https://aws.amazon.com/ko/what-is/api/
API๋ ๋ฌด์์ธ๊ฐ์? - API ์ด๋ณด์๋ฅผ ์ํ ๊ฐ์ด๋ - AWS
aws.amazon.com
https://www.algolia.com/blog/engineering/api-keys-vs-json-web-tokens/
API keys vs JWT authorization: Which is best?
Sometimes, API keys are sufficient; more often, JWT (JSON Web Authorization) offers more protection, ease-of-use, and flexibility.
www.algolia.com
'์ด๋ ธ๋ฒ ์ด์ ์บ ํ > ์ง์์๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
5์ฃผ์ฐจ ๊ณผ์ React ์ฌํ ์ฃผ์ฐจ ํค์๋ (0) | 2022.08.26 |
---|---|
React DOM, ์๋ฒ๋ฆฌ์ค (0) | 2022.08.18 |
SPA ๋ฐฉ์๊ณผ MPA ๋ฐฉ์ (0) | 2022.08.13 |
JavaScript์ ES๋?, ES5/ES6 ๋ฌธ๋ฒ ์ฐจ์ด (0) | 2022.08.12 |
ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ด(JavaScript) (0) | 2022.08.05 |