
PHP ์จ๋ผ์ธ ๊ฐ์
>PHP - ๊ณ ๊ธ
๐ PHP ๊ณ ๊ธ - 5์ฃผ์ฐจ: RESTful API ๋ณด์ ๋ฐ ์ธ์ฆ - 01 API ํค, ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ (JWT)
![]() |
ํ์ | 10.0 | ๋ผ์ด์ผ์ค | free |
---|---|---|---|---|
์ฌ์ฉ์ํ์ | 10.0 | ์ด์์ฒด์ | ||
๋ค์ด๋ก๋ | 1 | ํ์ผํฌ๊ธฐ | 0 | |
์ ์์ฌ | LUZENSOFT | ๋ฑ๋ก์ผ | 2025-09-14 15:39:19 | |
์กฐํ์ | 2 |
RESTful API ๋ณด์์ ํ์์ฑ
์ค๋๋ ๋๋ถ๋ถ์ ์น ์๋น์ค๋ RESTful API๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค. ์ด ๊ณผ์ ์์ ์ค์ํ ์ฌ์ฉ์ ์ ๋ณด๋ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ๋ ์ ์์ด, #API๋ณด์ ์ ํ์์ ์ด๋ค. ํนํ #์ธ์ฆ ๊ณผ #์ธ๊ฐ ๋ ๋ณด์์ ํต์ฌ์ผ๋ก, ์ฌ์ฉ์๊ฐ ๋๊ตฌ์ธ์ง ํ์ธํ๊ณ (์ธ์ฆ), ๊ทธ ์ฌ์ฉ์๊ฐ ํน์ ์์์ ์ ๊ทผํ ๊ถํ์ด ์๋์ง (์ธ๊ฐ) ๊ฒ์ฆํ๋ ๊ณผ์ ์ด๋ค.
1. API ํค๋ฅผ ์ด์ฉํ ์ธ์ฆ
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ API ๋ณด์ ๋ฐฉ์ ์ค ํ๋๋ #APIํค ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. API ํค๋ ์๋น์ค์ ์ ๊ทผํ๊ธฐ ์ํด ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐ๊ธ๋๋ ๊ณ ์ ํ ๋ฌธ์์ด์ด๋ค. ๋ง์น ๊ฑด๋ฌผ์ ์ด์ ์ ๊ฐ๋ค๊ณ ๋ณผ ์ ์๋ค.
์ฅ์
๊ตฌํ์ด ๋งค์ฐ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ด๋ค.
์๊ท๋ชจ ์๋น์ค๋ ๋น๊ณต๊ฐ ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ ์ ํ์ ์ ํฉํ๋ค.
๋จ์
๋ณด์์ ์ทจ์ฝํ๋ค.
ํค๊ฐ ๋ ธ์ถ๋๋ฉด ๋๊ตฌ๋ ํด๋น API๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์ผ๋ฐ์ ์ผ๋ก URL ํ๋ผ๋ฏธํฐ๋ ํค๋์ ํฌํจ๋์ด ์ ์ก๋๋๋ฐ, ์ด ๊ณผ์ ์์ ์ค๋ํ(sniffing) ๊ณต๊ฒฉ์ ๋ ธ์ถ๋ ์ ์๋ค.
ํค ๊ด๋ฆฌ ๋ฐ ๊ฐฑ์ ์ด ๋ฒ๊ฑฐ๋กญ๋ค.
2. ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ (JWT)
API ํค์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ๋์จ ๊ฒ์ด #ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ๋ฐฉ์์ด๋ค. ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ ํฐ์ #JWT (JSON Web Token)์ด๋ค. JWT๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ํฌํจํ๋ #ํ ํฐ ์ ๋ฐํํ์ฌ ์ธ์ฆ์ ์ฌ์ฉํ๋ค.
JWT์ ๊ตฌ์กฐ
JWT๋ ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
ํค๋ (Header): ํ ํฐ์ ํ์ ๊ณผ ํด์ ์๊ณ ๋ฆฌ์ฆ ์ ๋ณด๊ฐ ๋ค์ด์๋ค.
ํ์ด๋ก๋ (Payload): ์ฌ์ฉ์ ์ ๋ณด, ๊ถํ ๋ฑ ์ค์ง์ ์ธ ๋ด์ฉ์ด ๋ด๊ฒจ์๋ค. #ํด๋ ์ ์ด๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
์๊ทธ๋์ฒ (Signature): ํค๋์ ํ์ด๋ก๋๋ฅผ ์๋ฒ์ #๋น๋ฐํค ๋ก ์๋ช ํ ๊ฐ์ด๋ค. ์ด๋ฅผ ํตํด ํ ํฐ์ด ์๋ณ์กฐ๋์ง ์์์์ ๊ฒ์ฆํ ์ ์๋ค.
JWT ์ธ์ฆ ๊ณผ์
๋ก๊ทธ์ธ ์์ฒญ: ์ฌ์ฉ์๊ฐ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ก ๋ก๊ทธ์ธํ๋ค.
ํ ํฐ ๋ฐํ: ์๋ฒ๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฒ์ฆํ ํ, JWT๋ฅผ ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์ ๋ณด๋ธ๋ค.
ํ ํฐ ์ ์ฅ: ํด๋ผ์ด์ธํธ๋ ๋ฐ์ ํ ํฐ์ ์ ์ฅํ๋ค. (์: ๋ก์ปฌ ์คํ ๋ฆฌ์ง, ์ฟ ํค)
API ์์ฒญ: ์ดํ ํด๋ผ์ด์ธํธ๋ API ์์ฒญ ์๋ง๋ค HTTP ํค๋์
Authorization
ํ๋์ ํ ํฐ์ ๋ด์ ๋ณด๋ธ๋ค. (์:Authorization: Bearer <token>
)ํ ํฐ ๊ฒ์ฆ: ์๋ฒ๋ ๋ฐ์ ํ ํฐ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๊ณ , ์ ํจํ ๊ฒฝ์ฐ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค. ์๊ทธ๋์ฒ๋ฅผ ํ์ธํ์ฌ ํ ํฐ์ด ๋ณ์กฐ๋์ง ์์๋์ง, ์ ํจ ๊ธฐ๊ฐ์ด ์ง๋์ง ์์๋์ง ๋ฑ์ ๊ฒ์ฆํ๋ค.
์ฅ์
#ํ์ฅ์ฑ ์ด ๋ฐ์ด๋๋ค.
์ฌ๋ฌ ์๋ฒ์ ๋ถํ๋ฅผ ๋ถ์ฐํ๋ #๋ถ์ฐ์์คํ ์์ ํนํ ์ ๋ฆฌํ๋ค.
์๋ฒ์ #์ธ์ ์ ์ ์ฅํ ํ์๊ฐ ์์ด #๋ฌด์ํ (stateless) ๊ตฌ์กฐ๋ฅผ ์ ์งํ ์ ์๋ค.
๋ณด์์ฑ์ด ๋๋ค. ๋น๋ฐํค๊ฐ ๋ ธ์ถ๋์ง ์๋ ํ ํ ํฐ ์๋ณ์กฐ๊ฐ ์ด๋ ต๋ค.
๋จ์
ํ ํฐ์ ๊ธธ์ด๊ฐ ๊ธธ์ด ๋คํธ์ํฌ ๋ถํ๊ฐ ์ฝ๊ฐ ์ฆ๊ฐํ ์ ์๋ค.
ํ ํฐ์ด ํ์ทจ๋ ๊ฒฝ์ฐ, ์ ํจ ๊ธฐ๊ฐ์ด ๋๋ ๋๊น์ง ๋ฌด๋ฐฉ๋น ์ํ๊ฐ ๋ ์ ์๋ค.
์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด #๋ฆฌํ๋ ์ํ ํฐ (Refresh Token)๊ณผ ๊ฐ์ ์ถ๊ฐ์ ์ธ ์ ๋ต์ด ํ์ํ๋ค.
์์ฝ ๋ฐ ๊ฒฐ๋ก
API ํค๋ ๊ฐ๋จํ๊ณ ๋น ๋ฅด๊ฒ ๊ตฌํํ ์ ์์ง๋ง, ๋ณด์์ ์ทจ์ฝํ๋ค. ๋ฐ๋ฉด, #JWT ๋ ๊ตฌํ์ด ๋ค์ ๋ณต์กํ์ง๋ง, ๋์ ๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ ์ ๊ณตํ์ฌ ํ๋์ ์ธ ์น ์๋น์ค์ ๋ ์ ํฉํ๋ค. ๋ค์ ์๊ฐ์๋ ์ค์ ๋ก #PHP ์์ JWT๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ๋ค.
API๋ณด์ ์ธ์ฆ ์ธ๊ฐ APIํค ํ ํฐ JWT JSONWebToken ํด๋ ์ ๋น๋ฐํค ํ์ฅ์ฑ ๋ถ์ฐ์์คํ ์ธ์ ๋ฌด์ํ ๋ฆฌํ๋ ์ํ ํฐ PHP
50๋ง๊ฐ IP๋ฅผ ๋ณด์ ! ์ฌ์ฉ์ด๋ ฅ ์๋ IP์ ๊ณต ๊ฐํธ์ฌ์ฉ ๋ฌด๋ฃํ ์คํธ OK