๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Spring Security

[Spring Security] ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ์ด๋ž€?ํ๋ฆ„, ํŠน์ง• ์ •๋ฆฌ

by ์šฐ์ฃผ๋ฌผ๊ณ ๊ธฐ 2025. 5. 4.
๋ฐ˜์‘ํ˜•

JWT ๊ณต๋ถ€ ์ „์— ์‚ฌ์ „ ์ง€์‹์œผ๋กœ ํ† ํฐ๊ธฐ๋ฐ˜ ์ธ์ฆ์„ ์•Œ์•„์•ผํ•จ

 

 

์„œ๋ฒ„ ๊ธฐ๋ฐ˜ ์ธ์ฆ & ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ

 

์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ๋•Œ,

์ธ์ฆ๋œ ์‚ฌ๋žŒ์ธ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•๋“ค ์ค‘ ํ•˜๋‚˜

โ€‹

์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์ œ๊ณต.

โ€‹

๋‚˜๋Š” ์ง€๋‚œ ์ฑ•ํ„ฐ์—์„œ

๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•ด์ฃผ๋Š” ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์จ์„œ

์‚ฌ์šฉ์ž ์ •๋ณด ๋‹ด์€ ์„ธ์…˜ ์ƒ์„ฑ & ์ €์žฅํ•ด์„œ ์ธ์ฆํ–ˆ์Œ

(= ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ)

(๋”ฐ๋กœ ์ง์ ‘์ ์œผ๋กœ ๋ช…์‹œ ์•ˆํ•ด๋„ ์•Œ์•„์„œ ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์—์„œ ํ•ด์คŒ)

โ€‹

ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ์€, ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ž„

โ€‹

ํ† ํฐ์€ uniqueํ•œ ๊ฐ’์œผ๋กœ, ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ์”€

์„œ๋ฒ„๊ฐ€ ํ† ํฐ ๋งŒ๋“ค์–ด์„œ ํด๋ผ์ด์–ธํŠธํ•œํ…Œ ์ฃผ๊ณ ,

ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ํ† ํฐ ๊ฐ–๊ณ  ์žˆ๋‹ค๊ฐ€

์„œ๋ฒ„ํ•œํ…Œ ์š”์ฒญํ•  ์ผ ์žˆ์„ ๋•Œ ํ† ํฐ์ด๋ž‘ ๊ฐ™์ด ์‹ ์ฒญํ•จ.

-> ์„œ๋ฒ„๋Š” ํ† ํฐ๋งŒ ๋ณด๊ณ  ์œ ํšจํ•œ ์‚ฌ๋žŒ์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋‹จํ•จ

 

 

 


ํ† ํฐ ์ „๋‹ฌ, ์ธ์ฆ๋ฐ›๋Š” ๊ณผ์ •

 

1. ํด๋ผ์ด์–ธํŠธ -> ์„œ๋ฒ„ : ๋กœ๊ทธ์ธ ์š”์ฒญ

(์•„์ด๋””, ๋น„๋ฒˆ์„ ์ „๋‹ฌํ•˜๋ฉด์„œ ์š”์ฒญ)

โ€‹

2. ์„œ๋ฒ„๋Š” ํ† ํฐ์„ ์ƒ์„ฑ

(ํ•ด๋‹น ์•„์ด๋””, ๋น„๋ฒˆ ๋ณด๊ณ  ์œ ํšจํ•œ ์‚ฌ์šฉ์ž์ธ์ง€ ๊ฒ€์ฆ ํ›„ ์ƒ์„ฑ)

โ€‹

3. ๋งŒ๋“  ํ† ํฐ์„ ํด๋ผ์ด์–ธํŠธํ•œํ…Œ ์‘๋‹ต์œผ๋กœ ์คŒ

โ€‹

4. ํด๋ผ์ด์–ธํŠธ๋Š” ํ† ํฐ์„ ์ €์žฅ

โ€‹

5. ์ถ”ํ›„ ๋‹ค๋ฅธ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ, ํ•ด๋‹น ํ† ํฐ ์ •๋ณด๋ž‘ ๊ฐ™์ด ์š”์ฒญ ๋ณด๋ƒ„

(์ธ์ฆ์ด ํ•„์š”ํ•œ API ์‚ฌ์šฉํ•  ๋•Œ)

โ€‹

6. ์„œ๋ฒ„๋Š” ํ•ด๋‹น ํ† ํฐ ๊ฒ€์ฆ

โ€‹

7. ์„œ๋ฒ„ -> ํด๋ผ์ด์–ธํŠธ : ๊ทธ์— ๋งž๋Š” ์‘๋‹ต

 

 

 

ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ์˜ ํŠน์ง•
๋ฌด์ƒํƒœ์„ฑ, ํ™•์žฅ์„ฑ, ๋ฌด๊ฒฐ์„ฑ

 

 

1. ๋ฌด์ƒํƒœ์„ฑ

์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด ํ† ํฐ์€, ํด๋ผ์ด์–ธํŠธ์— ์žˆ์Œ.

= ์„œ๋ฒ„๋Š” ์ €์žฅํ•  ํ•„์š”X

โ€‹

ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ ์ƒํƒœ ์œ ์ง€ํ•˜๋ฉด์„œ

์ดํ›„ ์š”์ฒญ๋“ค์„ ์ฒ˜๋ฆฌํ•ด์•ผ๋˜๋Š”๋ฐ

์ด๊ฒŒ ์ƒํƒœ๊ด€๋ฆฌ์ž„.

โ€‹

์„œ๋ฒ„ ์ž…์žฅ์—์„œ๋Š” ์•„๋ฌด๊ฒƒ๋„ ๊ธฐ์–ตํ•˜์ง€ ์•Š๊ณ ,

์˜ค๋กœ์ง€ ๋ฐ›์€ ํ† ํฐ ๊ฒ€์ฆ๋งŒ!!ํ•จ

โ€‹

= ์™„์ „ํ•œ ๋ฌด์ƒํƒœ๋กœ, ํšจ์œจ์ ์ธ ๊ฒ€์ฆ ๊ฐ€๋Šฅ

โ€‹

2. ํ™•์žฅ์„ฑ

1๋ฒˆ ๋ฌด์ƒํƒœ์„ฑ์—์„œ, ์ƒํƒœ ๊ด€๋ฆฌ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•œ๋‹ค๊ณ  ํ–ˆ์Œ.

์„œ๋ฒ„๋Š” ์‹ ๊ฒฝ์“ธ๊ฒŒ ์—†์œผ๋‹ˆ๊นŒ ์„œ๋ฒ„ ํ™•์žฅ์— ์šฉ์ดํ•จ.

โ€‹

ex. ๋ฌผ๊ฑด ํŒŒ๋Š” ์„œ๋น„์Šค์—์„œ

๊ฒฐ์ œ๋ฅผ ์œ„ํ•œ ์„œ๋ฒ„, ์ฃผ๋ฌธ์„ ์œ„ํ•œ ์„œ๋ฒ„

์ด๋ ‡๊ฒŒ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •.

โ€‹

์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ์€ ๊ฐ๊ฐ API์—์„œ ์ธ์ฆ

but ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ์—์„œ๋Š” ํ† ํฐ ๊ฐ–๋Š” ์ฃผ์ฒด๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋ผ์„œ

ํ•˜๋‚˜์˜ ํ† ํฐ์œผ๋กœ ๋‘๊ฐœ์˜ ์„œ๋ฒ„์— ์š”์ฒญ ๋ณด๋‚ด๊ธฐ ๊ฐ€๋Šฅํ•จ

โ€‹

+ ํŽ˜์ด์Šค๋ถ, ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ ๊ฐ™์ด ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์“ฐ๋Š”

๋‹ค๋ฅธ ์‹œ์Šคํ…œ์—๋„ ์ ‘๊ทผํ•ด์„œ ๋กœ๊ทธ์ธ ๋ฐฉ์‹ ํ™•์žฅ ๊ฐ€๋Šฅํ•จ.

โ€‹

3. ๋ฌด๊ฒฐ์„ฑ

ํ† ํฐ ๋ฐฉ์‹์€ HMAC(hash-based message authentication)๊ธฐ๋ฒ•์ด๋ผ๊ณ ๋„ ๋ถ€๋ฆ„

ํ† ํฐ ๋ฐœ๊ธ‰ ์ดํ›„์—, ํ† ํฐ ์ •๋ณด ๋ณ€๊ฒฝ ๋ชปํ•จ.

= ํ† ํฐ์˜ ๋ฌด๊ฒฐ์„ฑ์ด ๋ณด์žฅ๋˜๋Š”๊ฒƒ

โ€‹

๋ˆ„๊ฐ€ ํ† ํฐ ํ•œ๊ธ€์ž๋ผ๋„ ๋ฐ”๊พธ๋ฉด ์„œ๋ฒ„์—์„œ ์ธ์ฆ ์•ˆํ•ด์คŒ

 

 

 

๋ฐ˜์‘ํ˜•