๐Ÿ—„๏ธBackend

[๋ณด์•ˆ] jwt.secret ๊ด€๋ฆฌ(.gitignore ์„ค์ •, SpringBoot+intelliJ)

bananackck 2025. 3. 25. 02:23

ํ‰ํ™”๋กญ๋˜ ์–ด๋А๋‚ .... ๋ฉ”์ผ์ด ๋‚ ๋ผ์™”๋‹ค...

์‹ฌ์žฅ์ด ์ฟต ํ–ˆ๋‹ค. api key๋‚˜ jwtToken์„ github์— ์˜ฌ๋ฆฌ๋ฉด ์•ˆ๋˜๋Š” ์ ์„ ์•Œ๊ณ ๋Š” ์žˆ์—ˆ์ง€๋งŒ, ์‹ ๊ฒฝ์“ธ ๊ฒจ๋ฅผ์ด ์—†์—ˆ๋‹ค. ์‚ฌ์‹ค์€ ๊ท€์ฐฎ์•„์„œ ๋”ฐ๋กœ ๋นผ์ง€ ์•Š์•˜๋˜ ๊ฑฐ์ผ ์ˆ˜๋„.....

๋กœ์ปฌ์—์„œ ์ž‘์—…ํ•œ๊ฑฐ๋ผ์„œ ๋ณ„๋กœ ๋ฌธ์ œ ๋  ์ผ์€ ์—†์—ˆ์ง€๋งŒ ๊ทธ๋ž˜๋„ ์ € ๋ฌด์„œ์šด ๋ฉ”์ผ ์ œ๋ชฉ์„ ๋ณด๊ณ  ์žˆ์ž๋‹ˆ... ๋‹น์žฅ ํ•ด๊ฒฐํ•ด์•ผ๊ฒ ๋‹ค ์‹ถ์—ˆ๋‹ค.

JWT์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์ถ”ํ›„์— ์ž‘์„ฑํ•˜๊ฒ ๋‹ค.


JWT secret key

JWT token์„ ์„œ๋ช…ํ•˜๊ณ  ๊ฒ€์ฆํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋น„๋ฐ€ ํ‚ค๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

JWT๋ž€ ๊ณต๊ฐœ ํ‚ค์™€ ๋น„๋ฐ€ ํ‚ค๋ฅผ ์Œ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ํ† ํฐ์— ์„œ๋ช…ํ•œ๋‹ค. 
๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์œ ์ €๋ฅผ ์ธ์ฆํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. 

 

์ฆ‰, ๋น„๋ฐ€ ํ‚ค์ด๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€์— ์œ ์ถœ๋˜๋ฉด ์•ˆ๋œ๋‹ค. ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ฐ„๊ณผํ•˜๋Š” ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜์ธ๋ฐ, ๋ฌด์ง€์„ฑ์œผ๋กœ git push๋ฅผ ๋‚ ๋ฆฌ๋‹ค ๋ณด๋ฉด ์–ด๋А ์ˆœ๊ฐ„ ์œ ์ถœ๋˜์žˆ๋‹ค... ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ •์‹ ์„ ๋‹จ๋”” ์ฐจ๋ฆฌ๊ณ  ์ด์™€ ๊ฐ™์€ secret key๋“ค์€ ๋”ฐ๋กœ ๋นผ์„œ .gitignore์— ์ถ”๊ฐ€ํ•ด์ฃผ์ž.

 

๋‚˜๋Š” spring boot ๊ฐœ๋ฐœํ•˜๋‹ค๊ฐ€ ์•Œ๋žŒ์ด ์™”์œผ๋‹ˆ spring boot + intelliJ ํ™˜๊ฒฝ์—์„œ๋ฅผ ์˜ˆ์‹œ๋กœ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.

 

SpringBoot + intelliJ ์—์„œ ๋น„๋ฐ€ ํ‚ค ๊ด€๋ฆฌํ•˜๊ธฐ

1. application.properties์—์„œ ๋น„๋ฐ€ ํ‚ค ๋ณต์‚ฌ

๋จผ์ €, application.properties์— ์•„๋ž˜์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ๋ถ„์˜ ๋น„๋ฐ€ ํ‚ค๊ฐ€ ๋“ฑ๋ก๋˜์žˆ์„ ๊ฒƒ์ด๋‹ค. 

์ด ํ‚ค๋ฅผ ๋ณต์‚ฌ ํ•ด๋‘๊ณ , ์—ฌ๊ธฐ์„œ๋Š” ์‚ญ์ œํ•˜์ž.

...

//๋น„๋ฐ€ ํ‚ค
jwt.secret=secretsecretsecretsecretsecretsecretsecretsecretsecret
jwt.expiration-ms=86400000

...

 

2. application-secret.properties์— ๋ณต์‚ฌ

๋ณด์•ˆ ์ด์Šˆ๊ฐ€ ์žˆ๋Š” ๊ฐ’๋“ค๋งŒ ์ €์žฅํ•ด ๋†“์„ application-secret.properties ๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ ๋น„๋ฐ€ ํ‚ค๋ฅผ ๋ณต์‚ฌํ•ด์ค€๋‹ค.

//๋น„๋ฐ€ ํ‚ค
jwt.secret=secretsecretsecretsecretsecretsecretsecretsecretsecret

 

3. .gitignore์— application-secret.properties ์ถ”๊ฐ€

application-secret.properties์˜ ๊ฒฝ๋กœ๊ฐ€ .gitignore์™€ ๊ฐ™์œผ๋ฉด ํŒŒ์ผ๋ช…๋งŒ ์ถ”๊ฐ€ํ•œ๋‹ค.

...
application-secret.properties

 

๋‹ค๋ฅธ ๊ฒฝ๋กœ์— ์žˆ๋‹ค๋ฉด ๊ฒฝ๋กœ๊นŒ์ง€ ํฌํ•จํ•ด์ค€๋‹ค. ์•„๋ž˜๋Š” ๋‚ด ์˜ˆ์‹œ์ด๋‹ค.

...
src/main/resources/application-secret.properties

 

๊ตฟ! ์ด์ œ push ๋ฅผ ํ•˜๋‚˜ ๋‚ ๋ ค๋ณด๋ฉด! ๋น„๋ฐ€ ํ‚ค๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ ๋ถ„๋ฆฌ ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

4. ์ฝ”๋“œ์— ์ ์šฉ ํ™•์ธ

๋งˆ์ง€๋ง‰์œผ๋กœ ์ •์˜ํ•œ jwt.secret ์ด ์‹ค์ œ ์ฝ”๋“œ์—์„œ ์ž˜ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€ ๋‹ค์‹œ ํ™•์ธํ•˜์ž.

@Value์˜ ์„ค์ • ๊ฐ’์„ plain secret key๋ฅผ ์ ์–ด๋†“์œผ๋ฉด ๋ง์งฑ ๋„๋ฃจ๋ฌต์ด๋‹ค.

   ...
    @Value("${jwt.secret}")
    private String secretKey;
   ...

+ GitGuardians

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋‚˜์—๊ฒŒ ๋ฉ”์ผ ๊ฒฝ๊ณ ๋ฅผ ์ด์ฃผ์—ˆ๋˜ ๋ฐ๊ฐ€ ๋ฐ”๋กœ GitGuardians๋‹ค. 

๋‚ด git repository์˜ ๋ณด์•ˆ์„ ์œ„ํ•ด์„œ ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ๊ฐ€์ž…ํ•ด์ฃผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

์•„๋ž˜์™€ ๊ฐ™์ด ๋‚ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ค‘ ๋ณด์•ˆ ์ •๋ณด๊ฐ€ ์œ ์ถœ๋˜์žˆ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ์†Œ์Šค์— ๋“ค์–ด๊ฐ€๋ฉด, ์–ด๋А commit, ์–ด๋А ์ฝ”๋“œ์—์„œ ์ •๋ณด ์œ ์ถœ์ด ์–ธ์ œ ์ผ์–ด๋‚ฌ๋Š”์ง€ ์•„์ฃผ ์นœ์ ˆํ•˜๊ฒŒ ์•Œ๋ ค์ค€๋‹ค!