๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (240)

JiYoung Dev ๐Ÿ–ฅ

Spring Security ์ ์šฉ๊ธฐ (4) JWT(JSON Web Tokens) ์–ด๋””์— ์ €์žฅํ•  ๊ฒƒ์ธ๊ฐ€?

์ด์ „ ํฌ์ŠคํŒ…์—์„œ JWT์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค. 2024.04.29 - [Study/Java] - Spring Security ์ ์šฉ๊ธฐ (3) JWT(JSON Web Tokens) ๊ฐœ๋… JWT ๊ตฌํ˜„์„ ์ƒ๊ฐํ•˜๋‹ค๋ณด๋‹ˆ access token๊ณผ refresh token์„ ์–ด๋””์— ์ €์žฅํ•ด์•ผ ์ข‹์€์ง€์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ๋งŽ์€ ๋ถ„๋“ค์ด ๊ณ ๋ฏผํ•˜๊ณ  ์ž‘์„ฑํ•œ ๊ธ€๋“ค์ด ์žˆ์–ด ์ด๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋‚˜๋Š” ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฌ๊ณ ์ž ํ•œ๋‹ค.  JWT ๋ฐœ๊ธ‰ ํ”„๋กœ์„ธ์Šค  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋กœ๊ทธ์ธ์‹œ ์ธ์ฆ ์„œ๋ฒ„์—์„œ Access Token๊ณผ Refresh Token์„ ๋ฐœ๊ธ‰ํ•œ๋‹ค. 2. ์ดํ›„ ์‚ฌ์šฉ์ž๋Š” API ์š”์ฒญ์‹œ ์š”์ฒญ ํ—ค๋”์— Access Token์„ ๋„ฃ์–ด ์š”์ฒญํ•œ๋‹ค. 3. ์œ ํšจํ•œ  Token์ธ ๊ฒฝ์šฐ์—๋งŒ ํด๋ผ์ด์–ธํŠธ๋Š” ์ •์ƒ์ ์œผ๋กœ ์š”์ฒญ์„ ..

Spring Security ์ ์šฉ๊ธฐ (1) Spring Security๋ž€?

์ƒˆ๋กญ๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด์„œ ์ ์šฉํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋˜ ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜์ธ Spring Security. ์–ด๋– ํ•œ ๊ธฐ์ˆ ์ด๋ฉฐ ์–ด๋– ํ•œ ์›๋ฆฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ํ•˜๋‚˜ ํ•˜๋‚˜ ํฌ์ŠคํŒ…ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์€ Spring Security ์ ์šฉ๊ธฐ์˜ ์ฒซ ๋ฒˆ์งธ ํŒŒํŠธ, Spring Security๋ž€ ๋ฌด์—ˆ์ธ์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ๋ชฉ์ฐจ 1. Spring Security ๊ฐœ๋… 2. Spring Security ํŠน์ง• 3. Architecture ๐Ÿค Spring Security ๊ฐœ๋… Spring Security๋Š” ์ธ์ฆ, ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฐ ์ผ๋ฐ˜์ ์ธ ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๋ณดํ˜ธ๋ฅผ ์ œ๊ณตํ•˜๋Š” Spring ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ ๊ธฐ๋Šฅ ๋ถ€๋ถ„์—์„œ ๊ฐ€์žฅ ๋จผ์ € ์ž‘์—…ํ•˜๋Š” ๋ถ€๋ถ„์ด ๋ฐ”๋กœ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ๊ณผ ..

Study/Java 2024. 4. 22. 22:25
SHA-256๋ฅผ ์‚ฌ์šฉํ•œ ๋ฌธ์ž์—ด ์•”ํ˜ธํ™” ์˜ˆ์ œ - Java

์ง€๋‚œ๋ฒˆ PKI ํฌ์ŠคํŒ…์—์„œ ์ด์–ด์ง€๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. 2023.12.05 - [Study/๋ณด์•ˆ] - [์•”ํ˜ธํ™”] PKI(Public Key Infrastructure)์˜ ์ดํ•ด - (1) 2023.12.12 - [Study/๋ณด์•ˆ] - [์•”ํ˜ธํ™”] PKI(Public Key Infrastructure)์˜ ์ดํ•ด - (2) PKI, ์ธ์ฆ์„œ, ์ „์ž์„œ๋ช… PKI์˜ ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋ฉด์„œ ๋‹ค์–‘ํ•œ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ทธ ์ค‘ SHA-256์„ ์‚ฌ์šฉํ•œ ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•์„ Java๋กœ ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ณธ๋ก ์— ๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ SHA-256 ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ฌด์—‡์ธ์ง€ ๋‹ค์‹œ ์ƒ๊ธฐ์‹œํ‚ค๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. SHA(Secure Hash Algorithm) : ์•ˆ์ „ํ•œ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ SHA ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€ MD4 ํ•ด์ˆ˜..

Study/๋ณด์•ˆ 2023. 12. 14. 22:34
OTP์˜ ๋™์ž‘ ์›๋ฆฌ, HOTP์™€ TOTP ์ดํ•ดํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”. ์˜ค๋Š˜์€ ๊ธˆ์œต ๊ฑฐ๋ž˜์—์„œ ์ž์ฃผ ์“ฐ์ด๋Š” ๊ทธ๋ฆฌ๊ณ  ์ตœ๊ทผ์—๋Š” ๋กœ๊ทธ์ธ 2์ฐจ ์ธ์ฆ์œผ๋กœ๋„ ์ž์ฃผ ์“ฐ์ด๋Š” OTP์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. OTP๋ž€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๊ณ , OTP์˜ ์ข…๋ฅ˜์ธ HOTP์™€ TOTP๊ฐ€ ์–ด๋– ํ•œ ์›๋ฆฌ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. OTP(One Time Password) ์ •์˜ OTP๋ž€ One-Time password๋กœ ํ•œ ๋ฒˆ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. OTP๋Š” ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ƒ์„ฑํ•˜๋ฏ€๋กœ, ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ  ๋ณด์•ˆ์„ฑ์ด ๋†’๋‹ค๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. OTP ๋™๊ธฐํ™” ๋ฐฉ์‹ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ(๋˜๋Š” ํ† ํฐ) ์‚ฌ์ด์— ๋ฏธ๋ฆฌ ์•ฝ์†๋œ ๊ทœ์น™์— ์˜ํ•ด์„œ ํด๋ผ์ด์–ธํŠธ ์ชฝ์—์„œ ์ƒ์„ฑํ•œ ์ผํšŒ์šฉ ์•”ํ˜ธ๋ฅผ ์„œ๋ฒ„ ์ธก์— ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„ ์ธก๋„ ๊ฐ™์€ ๊ทœ์น™์— ์˜ํ•ด ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋น„๋ฐ€๊ฐ’์„ ๊ฐ€์ ธ์˜จ ํ›„,..

Study/๋ณด์•ˆ 2023. 12. 13. 22:16
[์•”ํ˜ธํ™”] PKI(Public Key Infrastructure)์˜ ์ดํ•ด - (2) PKI, ์ธ์ฆ์„œ, ์ „์ž์„œ๋ช…

2023.12.05 - [Study/๋ณด์•ˆ] - [์•”ํ˜ธํ™”] PKI(Public Key Infrastructure)์˜ ์ดํ•ด - (1) [์•”ํ˜ธํ™”] PKI(Public Key Infrastructure)์˜ ์ดํ•ด - (1) ์•”ํ˜ธํ™”์™€ PKI์— ๋Œ€ํ•œ ๊ธฐ๋ฐ˜ ์ง€์‹์„ ์ตํž ๊ธฐํšŒ๊ฐ€ ์žˆ์–ด์„œ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ฌธ์„œ, ๋ธ”๋กœ๊ทธ ๊ธ€ ๋“ฑ์„ ํ†ตํ•ด ํ•™์Šตํ•œ ์ž๋ฃŒ๋กœ ์ž˜๋ชป๋œ ๋ถ€๋ถ„์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆœ์„œ๋Š” ๊ฐ„๋‹จํ•˜ danyoujeong.tistory.com ์ด์ „ ํฌ์ŠคํŒ…์— ์ด์–ด PKI์— ๋Œ€ํ•ด ๊ณ„์†ํ•ด์„œ ์ด์•ผ๊ธฐํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ PKI๋ž€ ๋ฌด์—‡์ธ์ง€ PKI์˜ ๋“ฑ์žฅ๋ฐฐ๊ฒฝ๊ณผ ๊ตฌ์„ฑ์š”์†Œ, ๋™์ž‘ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ๋‚ด์šฉ์€ ์ œ๊ฐ€ ์กฐ์‚ฌํ•œ ์ž๋ฃŒ์™€ ๊ฐ•์˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑํ•œ ๋‚ด์šฉ์ด๋ฏ€๋กœ ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค..

Study/๋ณด์•ˆ 2023. 12. 12. 23:16
[์•”ํ˜ธํ™”] PKI(Public Key Infrastructure)์˜ ์ดํ•ด - (1)

์•”ํ˜ธํ™”์™€ PKI์— ๋Œ€ํ•œ ๊ธฐ๋ฐ˜ ์ง€์‹์„ ์ตํž ๊ธฐํšŒ๊ฐ€ ์žˆ์–ด์„œ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ฌธ์„œ, ๋ธ”๋กœ๊ทธ ๊ธ€ ๋“ฑ์„ ํ†ตํ•ด ํ•™์Šตํ•œ ์ž๋ฃŒ๋กœ ์ž˜๋ชป๋œ ๋ถ€๋ถ„์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆœ์„œ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ณด๋ณด์•ˆ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ์•”ํ˜ธํ™”์˜ ๋ฐฉ๋ฒ•๊ณผ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•œ PKI์˜ ๊ตฌ์กฐ(์ธ์ฆ์„œ, ์ „์ž์„œ๋ช…)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ •๋ณด ๋ณด์•ˆ(Information Security)๋ž€? ์ธํ„ฐ๋„ท์—์„œ ์„œ์น˜ํ•œ ๊ฒฐ๊ณผ ์ •๋ณด ๋ณดํ˜ธ, ์ •๋ณด ๋ณด์•ˆ์„ ๋”ฐ๋กœ ๊ตฌ๋ณ„ํ•˜๊ธฐ๋„ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์œผ๋‚˜ ์ €๋Š” ๊ฐ„๋žตํ•˜๊ฒŒ ์•„๋ž˜์˜ ๋‚ด์šฉ์œผ๋กœ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ •๋ณด์˜ ์ˆ˜์ง‘, ๊ฐ€๊ณต, ์ €์žฅ, ๊ฒ€์ƒ‰, ์†ก์‹ , ์ˆ˜์‹  ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ์ •๋ณด์˜ ํ›ผ์†, ๋ณ€์กฐ, ์œ ์ถœ ๋“ฑ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ด€๋ฆฌ์ , ๊ธฐ์ˆ ์  ๋ฐฉ๋ฒ• ๊ฐ„๋‹จํžˆ ์ •๋ณด๋ฅผ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์œ„ํ˜‘์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์ด๋ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ณด ๋ณด์•ˆ(Informa..

Study/๋ณด์•ˆ 2023. 12. 5. 23:02
๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ 5. Java ์งˆ๋ฌธ ์ •๋ฆฌ

๐Ÿ’Œ ์ž๋ฐ” ์–ธ์–ด์˜ ํŠน์ง• 1. JVM ์œ„์—์„œ ๋Œ์•„๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์šด์˜์ฒด์ œ์— ๋…๋ฆฝ์  2. ๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด 3. ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋”ฉ์„ ์ง€์› 4. ๋™์  ๋กœ๋”ฉ์„ ์ง€์› 5. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์žˆ์–ด ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ง„ํ–‰ ๐Ÿ’Œ JDK์™€ JRE์˜ ์ฐจ์ด์  JRE Java Runtime Enviroment๋กœ ์ž๋ฐ”๋กœ ๋งŒ๋“ค์–ด์ง„ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ API ๊ทธ๋ฆฌ๊ณ  JVM์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Œ JDK๋Š” Java Development kit๋กœ ์ž๋ฐ”๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ javadoc, javac์™€ ๊ฐ™์€ ๊ฐœ๋ฐœ ๋„๊ตฌ์™€ JRE๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐœ๋… ๐Ÿ’Œ JVM์ด๋ž€? JVM์ด๋ž€ Java Virtual Machine์œผ๋กœ ๋ฐ”์ดํŠธ ์ฝ”๋“œ์˜ class ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ๋œ ํŒŒ์ผ์„ CPU๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜์‹œ์ผœ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์„ ..

Study/Java 2023. 11. 18. 21:07
๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ 4. ์ž๋ฐ” ๋ณ€์ˆ˜์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž… Primitive type & Reference type

์˜ˆ์ƒ ์งˆ๋ฌธ 1.์ž๋ฐ” ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ค‘ ๊ธฐ๋ณธํ˜•๊ณผ ์ฐธ์กฐํ˜•์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”. ์˜ˆ์ƒ ์งˆ๋ฌธ 2. ์ž๋ฐ”์˜ ์›์‹œํƒ€์ž…๋“ค์€ ๋ฌด์—‡์ด ์žˆ์œผ๋ฉฐ ๊ฐ๊ฐ ๋ช‡ ๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•˜๋‚˜์š”? ์˜ค๋Š˜์€ ์•„์ฃผ ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค. ์ž๋ฐ”์˜ ์ž๋ฃŒํ˜•์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ์ธ๋ฐ ์˜ˆ์ƒ ์งˆ๋ฌธ 2์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์•„๋Š” ๋‚ด์šฉ์ด๋‹ˆ ์ž๋ฐ” ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๊ธฐ๋ณธํ˜•๊ณผ ์ฐธ์กฐํ˜•์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์ข€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. ๋ณ€์ˆ˜(Variable) ๋ณ€์ˆ˜๋ž€ ๋ฐ์ดํ„ฐ(data)๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋žจ์— ์˜ํ•ด ์ด๋ฆ„์„ ํ• ๋‹น๋ฐ›์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค. ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ž๋ฐ”์—์„œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๋ž€ ๊ฐ’(data)์˜ ์ข…๋ฅ˜(type)์— ๋”ฐ๋ผ ๊ฐ’์ด ์ €์žฅ๋  ๊ณต๊ฐ„์˜ ํฌ๊ธฐ์™€ ์ €์žฅํ˜•์‹์„ ์ •์˜ํ•œ ๊ฒƒ์ด๋‹ค. ์ž๋ฃŒํ˜•์—๋Š” ๋ฌธ์žํ˜•(char), ์ •์ˆ˜ํ˜•(byte, short, int, long), ์‹ค์ˆ˜ํ˜•(..

Study/Java 2023. 11. 8. 12:28