[Express.js] express-jwt-authorizer ๋ฐฐํฌ

jwt๋กœ ์ธ์ฆ ๋ฏธ๋“ค์›จ์–ด ๊ณ„์† ์žฌ๊ตฌ์„ฑํ•˜๊ธฐ ์‹ซ์–ด์„œ ๋ณ€๊ฒฝ๊ณผ ํ™•์žฅ์ด ์–ด๋А์ •๋„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋ชจ๋“ˆ๋กœ ๊ตฌ์„ฑํ•ด๋ดค๋‹ค.
https://github.com/myyrakle/express-jwt-authorizer

jwt ํ† ํฐ ๋ฐœ๊ธ‰ ๋ฐ ์ธ์ฆ์„ ์ž๋™ํ™”ํ•˜๊ณ  ์ธ์ฆ๋Œ€์ƒ ๊ฒฝ๋กœ๋“ค์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค. ์ผ๋‹จ ์„ค์น˜ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ์‹์œผ๋กœ ๊ฐ–๋‹ค๊ฐ€ ๋ฏธ๋“ค์›จ์–ด๋กœ ๋“ฑ๋กํ•œ๋‹ค.

needAuthPaths๋Š” ์ธ์ฆ์„ ๊ฑฐ์น  ๊ฒฝ๋กœ์˜ ์ •๊ทœํ‘œํ˜„์‹ ๋ชฉ๋ก์ด๋‹ค.
์ด ๊ฒฝ๋กœ์— ํ•ด๋‹น๋˜๋Š” ์š”์ฒญ๋“ค์€ ์ „๋ถ€ ์ธ์ฆ์„ ๊ฑฐ์น˜๋ฉฐ, ์ธ์ฆ ํ† ํฐ์ด ์ „๋‹ฌ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ธ์ฆ์— ์‹คํŒจํ•˜๋ฉด ๋ฐ”๋กœ 401 ์‘๋‹ต์„ ์ค€๋‹ค.
needAuthPathsExcept๋Š” ์ธ์ฆ์ด ํ•„์š”์—†๋Š” ๊ฒฝ๋กœ์˜ ์ •๊ทœํ‘œํ˜„์‹ ๋ชฉ๋ก์ด๋‹ค. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’์•„์„œ, needAuthPaths์— ํ•ด๋‹น๋˜๋”๋ผ๋„ needAuthPathsExcept์— ํ•ด๋‹น๋˜๋ฉด ์ธ์ฆ์„ ๊ฑฐ์น˜์ง€ ์•Š๋Š”๋‹ค.

priavateKey๋Š” ๋‹น์—ฐํžˆ ํ‚ค๊ฐ’์ด๊ณ ... ๋กœ๊ฑฐ ๋“ฑ๋ก๋„ ์žˆ๋‹ค.
expireIn์œผ๋กœ ๋งŒ๋ฃŒ์‹œ๊ฐ„์„ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๋Š”๋ฐ ์ €๊ธฐ์„  ์•ˆํ–ˆ๋‹ค. ๋””ํดํŠธ๊ฐ’์€ 1์‹œ๊ฐ„์ด๋‹ค.

๊ทผ๋ฐ jwt๋งŒ ์“ฐ๊ธฐ๋ณด๋‹จ ์„ธ์…˜๋„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์„œ 2์ค‘ ๊ฒ€์ฆ์„ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.
๊ทธ๋Ÿด๋•Œ๋Š” additionAuthorize๋กœ ์ถ”๊ฐ€ ๊ฒ€์ฆ ํ•จ์ˆ˜๋ฅผ ๋„˜๊ฒจ์ฃผ๋ฉด ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ์ €๋Ÿฐ ์ž‘์—… ํ•จ์ˆ˜๋“ค์€ ์ „๋ถ€ req.authorizer์— ๋“ฑ๋ก๋œ๋‹ค.

๋กœ๊ทธ์ธ ํ† ํฐ์€ makeTokenํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ธ์ฆ ์„ฑ๊ณต ์—ฌ๋ถ€๋Š” authorized ์†์„ฑ์œผ๋กœ,
์ธ์ฆ์ด ์„ฑ๊ณต๋˜์—ˆ์„ ๊ฒฝ์šฐ ํ† ํฐ์˜ ๊ฐ’์€ tokenValue๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค.