๐Ÿƒ๐Ÿผ ์ธ์ฆ&์ธ๊ฐ€ ์ดํ•ดํ•˜๊ธฐ1

may_soouuยท2020๋…„ 9์›” 7์ผ
0

1. ์ธ์ฆ(Authentication)

์ธ์ฆ : ์ฆ๋ช…ํ•˜๋Š” ๊ฒƒ ! (ํšŒ์›๊ฐ€์ž…&๋กœ๊ทธ์ธ)
์ธ์ฆ์„ ์™œ ํ• ๊นŒ???
* ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด์„œ!!
ex. ์ด ์‚ฌ๋žŒ์ด ๋ˆ์„ ๋‚ด๊ณ  ๋„ทํ”Œ๋ฆญ์Šค๋ฅผ ๋ณด๋Š” ๊ฑด์ง€, ์ •๊ธฐ๊ตฌ๋…ํ•˜๋Š” ์‚ฌ๋žŒ์ธ ๊ฑด์ง€ ๋“ฑ

1-1. ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ์•”ํ˜ธํ™”ํ• ๊นŒ?

  • batabse์— ์ €์žฅ ์‹œ ๊ฐœ์ธ์ •๋ณด๋ฅผ ํ•ด์ƒํ•˜์—ฌ ๋ณต์› ํ•  ์ˆ˜ ์—†๋„๋ก ํ•ด์•ผํ•˜๋ฉฐ
  • ssl์„ ์ ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™” ํ•ด์•ผํ•œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋‹จ๋ฐฉํ–ฅ ํ•ด์‰ฌ ํ•จ์ˆ˜(one-way hash function)๊ฐ€ ์ฃผ๋กœ ์“ฐ์ธ๋‹ค.

๋ฐฉํ–ฅ์ด ํ•œ์ชฝ์œผ๋กœ๋งŒ ๋˜๋Š” ๊ฒƒ !
๋ณดํ†ต ํ•ด์‰ฌํ•จ์ˆ˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ๋น ๋ฅธ ์ž๋ฃŒ์˜ ๊ฒ€์ƒ‰, ๋ฐ์ดํ„ฐ์˜ ์œ„๋ณ€์กฐ ์ฒดํฌ๋ฅผ ์œ„ํ•ด์„œ ์“ด๋‹ค.
Md5, sha-1 ๋Š” ์ด๋ฏธ ๋งค์ปค๋‹ˆ์ฆ˜์ด ๋“œ๋Ÿฌ๋‚˜์„œ ๋ณด์•ฝ์— ์ทจ์•ฝํ•˜๊ณ ,
์š”์ฆ˜์—๋Š” sha-256 ๋ฅผ ๋งŽ์ด ์“ด๋‹ค.

โœ‹๐Ÿป ๊ทผ๋ฐ! ๊ฐ™์€ ๋ฒˆํ˜ธ๋ฉด ์•”ํ˜ธํ™” ๋œ ๊ฒƒ๋„ ๊ฐ™์Œ
์˜ˆ๋ฅผ ๋“ค์–ด ๋‚ด๊ฐ€ '1234'๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์•”ํ˜ธํ™” ๋œ ๊ฒƒ์€ 'adfadfefawsef121212'๋กœ ๊ฐ€์ •ํ•˜์ž
๋‚ด ์˜†์‚ฌ๋žŒ๋„ '1234'๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋˜‘๊ฐ™์ด 'adfadfefawsef121212'๋กœ ์•”ํ˜ธํ™” ๋จ!

์ด๋Ÿฐ ํ—ˆ์ ์„ ๋ณด์™„ํ•˜๊ณ ์ž
salting & key stretching ์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • salting : ์†Œ๊ธˆ์„ ์นœ๋‹ค
    ์•”ํ˜ธํ™” ๋œ ๊ฒƒ์— ์†Œ๊ธˆ์„ ์ณ์„œ(๋žœ๋ค๋œ ๋‹จ์–ด๋ฅผ ์ง‘์–ด๋„ฃ์–ด์„œ) ๋” ์–ด๋ ต๊ฒŒ!!
  • key stretching(=ํ‚ค ์ŠคํŠธ๋žซ์นญ) : ์†ŒํŒ…์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•˜๋Š” ๊ฒƒ!
    ์†ŒํŒ…์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•˜๋ฉด์„œ ๋”๋”๋”๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ!

    ์œ„์— ๋‘ ๊ฐ€์ง€๋Š” bcrypt๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด์„œ ํ•œ๋‹ค

    ์†ŒํŒ…์ด๋ž‘ ํ‚ค์ŠคํŠธ๋žซ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜ต์…˜(๋ช‡๋ฒˆ ๋Œ๋ฆฐ๊ฑด์ง€)
    Salt (๋žœ๋คํ•œ ๊ฐ’)
    Hashed password :

๐Ÿ‘€ ๊ทธ๋Ÿผ ์‹ค์ œ ์„œ๋ฒ„์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ์ธ์ฆ์„ ํ• ๊นŒ?
ํšŒ์›๊ฐ€์ž…ํ•˜๋ฉด์„œ ์ž…๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•”ํ˜ธํ™” ํ•ด๋†“๊ณ ,
๋กœ๊ทธ์ธํ•˜๋ฉด์„œ ์ž…๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋‹ค์‹œ ์•”ํ˜ธํ™”ํ•ด์„œ ์•”ํ˜ธํ™” ๋œ ๋‘๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ๋น„๊ต!
๐Ÿ‘€ ์™œ๋ƒ?!
์•”ํ˜ธํ™”๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋‹ค์‹œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—!!!

2. ์ธ๊ฐ€(Authorization)

http๋Š” statelessํ•œ ์„ฑ์งˆ์ด ์žˆ์–ด์„œ(Http ๋ธ”๋กœ๊ทธ์— ํ•ด๋‹น ๋‚ด์šฉ ๊ธฐ์žฌ)
์›น์ด ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ‹ฐ์ผ“์„ ์ค˜์•ผํ•จ!
์ด ํ‹ฐ์ผ“์„ Json Web Token ์ด๋ผ๊ณ  ๋ถ€๋ฆ„

2-1. JWT

ํ† ํฐ์€ ์–ด๋””์— ๋ณด๊ด€ํ• ๊นŒ ? >>>>>>> ์ฟ ํ‚ค๋‚˜ ์„ธ์…˜ ๋“ฑ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•œ๋‹ค. ์ฆ‰,๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ

๋ธŒ๋ผ์šฐ์ €์— ์žˆ๋Š” ์ด ํ† ํฐ์„ ๊บผ๋‚ด์„œ ํ—ค๋”์— ๋‹ด์•„ ์„œ๋ฒ„๋กœ ๋ณด๋‚ธ๋‹ค.


ํ† ํฐ์€ ์œ„์˜ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๋˜์–ด ์žˆ๋‹ค(ํ—ค๋”, ๋‚ด์šฉ, ์„œ๋ช…)

1. ํ—ค๋”

ํ† ํฐ์˜ ํƒ€์ž…๊ณผ ํ•ด์‹œ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.
ํ•ด๋”์˜ ๋‚ด์šฉ์€ base64 ๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉํ•ด์„œ JWT์˜ ๊ฐ€์žฅ ์ฒซ๋ถ€๋ถ„์— ๊ธฐ๋ก
์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋˜์–ด ์žˆ๋Š”์ง€ ์„œ๋ฒ„ํ•œํ…Œ ์•Œ๋ ค์ค€๋‹ค.

2. ๋‚ด์šฉ

exp์™€ ๊ฐ™์ด ๋งŒ๋ฃŒ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ณต๊ฐœ ํด๋ ˆ์ž„์ด๋‹ค
ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„ ํ˜‘์˜ํ•˜์— ์‚ฌ์šฉํ•˜๋Š” ๋น„๊ณต๊ฐœ ํด๋ ˆ์ž„์ด๋‹ค
๋‘๊ฐ€์ง€ ์š”์†Œ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ž‘์„ฑํ•œ ๋’ค bse64์ธ์ฝ”๋”ฉํ•˜์—ฌ ๋‘๋ฒˆ์งธ ์š”์†Œ๋กœ ์œ„์น˜ํ•œ๋‹ค
โ€œexpโ€:1533234324 ์™€ ๊ฐ™์€ ์ •๋ณด๋Š” ์ดˆ ๋‹จ์œ„ ์˜๋ฏธ!
์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ ํ•˜๋Š” ์ •๋ณด๋„ ๋“ค์–ด๊ฐ„๋‹ค.
๋‹ค๋งŒ, ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๋‹ˆ ์ด๋ฉ”์ผ, ์ด๋ฆ„ ๋“ฑ ์‚ฌ์šฉ์ž์˜ ์ง์ ‘์ ์ธ ์ •๋ณด๋Š” ๋„ฃ์ง€ ๋ง๊ณ ,
id ๊ฐ’(ํ…Œ์ด๋ธ” ์ƒ์„ฑํ•  ๋•Œ ์œ ์ €์—๊ฒŒ ๋ถ€์—ฌ๋˜๋Š” PK๊ฐ’)์„ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค!
user_id = 1 << ์ด๋Ÿฐ์‹์œผ๋กœ

3. ์„œ๋ช…

JWT๋ฅผ ๋ˆ„๊ฐ€ ๋ฐœํ–‰ํ–ˆ๋Š”์ง€ ์‹œํฌ๋ฆฟ ํ‚ค๋กœ ๋‹ด์•„์ค€๋‹ค
ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ JWT๋ฅผ ๋ฐฑ์—”๋“œ api๋กœ ์ „์†กํ•˜๋ฉด JWT์˜ ์„œ๋ช…๋ถ€๋ถ„์„
๋ณตํ˜ธํ™”ํ•˜์—ฌ ์„œ๋ฒ„์—์„œ ์ƒ์„ฑํ•œ JWT๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธํ•œ๋‹ค

๐Ÿคทโ€โ™‚๏ธ ์„œ๋ช… ๋ถ€๋ถ„์„ ์™œ ๋ณตํ˜ธํ™”ํ• ๊นŒ?
ํ—ค๋”๋ž‘ ๋‚ด์šฉ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋˜‘๊ฐ™์ด ์•Œ ์ˆ˜ ์—†๋Š” ๋ฌธ์ž์—ด๋กœ ๋˜์–ด ์žˆ์œผ๋‚˜
์•”ํ˜ธํ™” ๋œ ๊ฑด ์•„๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ธ์ฝ”๋”ฉ ๋œ๊ฒƒ

3. ์ •๋ฆฌ

์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ฉด, ์ธ์ฆ๊ณผ ์ธ๊ฐ€๋Š” ๋ณด์•ˆ์„ ์œ„ํ•ด ๋Œ€๋ถ€๋ถ„ ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.
๊ทธ๋Ÿฌ๋‚˜, ์–‘๋ฐฉํ–ฅ์ธ ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.
๐Ÿฅ‘ ์˜ˆ๋ฅผ ๋“ค์–ด,
๋ฐฐ์†ก์ง€์ •๋ณด, ์นด๋“œ๋ฒˆํ˜ธ, ๋ณ‘์›์—์„œ ํšŒ์›๋ฒˆํ˜ธ(์ฃผ๋ฏผ๋ฒˆํ˜ธ) ๊ฐ™์€ ๊ฒƒ๋“ค์€ ์–‘๋ฐฉํ–ฅ์ด๋‹ค
๋‹ค์‹œ ๊บผ๋‚ด์„œ ์จ์•ผํ•˜๋Š” ๊ฒƒ๋“ค!
ex. ๋‹จ๋ฐฉํ–ฅ์ด๋ผ๋ฉด ๋‚ด๊ฐ€ ์ฟ ํŒก์—์„œ ์ฃผ๋ฌธํ•˜๋Š”๋ฐ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ์ง€ ์•Š๊ณ , ์ฃผ๋ฌธ ํ•  ๋•Œ๋งˆ๋‹ค ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ด์•ผํ•œ๋‹ค.

profile
back-end ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€