๐Ÿ’ป ๊ฐœ๋ฐœ ์ผ์ง€/SpringBoot

๐Ÿ’ก SNS ๋กœ๊ทธ์ธ(์นด์นด์˜ค)์„ ์œ„ํ•œ Rest API ์ƒ์„ฑโžก๏ธ 1ํƒ„ ๋ฐ”๋กœ๊ฐ€๊ธฐ: ์„ค์ • ๋ฐ ํšŒ์›๊ฐ€์ž…โžก๏ธ 2ํƒ„ ๋ฐ”๋กœ๊ฐ€๊ธฐ: JWT ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์› ์ •๋ณด ์กฐํšŒโžก๏ธ 3ํƒ„ ๋ฐ”๋กœ๊ฐ€๊ธฐ: Refresh TokenSNS ๋กœ๊ทธ์ธ Flowํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋ชจ๋ฐ”์ผ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ Rest API๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.Client SDK์—์„œ ์นด์นด์˜ค ๋กœ๊ทธ์ธ ์™„๋ฃŒ ํ›„ 3rd๋กœ๋ถ€ํ„ฐ ์ „ํ•ด๋ฐ›๋Š” accesToken์„ Server์— ์ „๋‹ฌํ•œ๋‹ค.ํ•ด๋‹น AccessToken์œผ๋กœ ๋‹ค์‹œํ•œ๋ฒˆ 3rd์— ์กฐํšŒํ•˜์—ฌ, ํšŒ์› ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.์กฐํšŒํ•œ ํšŒ์› ์ •๋ณด๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ, ๋ฐ”๋กœ ๋กœ๊ทธ์ธ ๋กœ์ง์„ ์‹คํ–‰ํ•˜์—ฌ ์„ฑ๊ณต ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.์กฐํšŒํ•œ ํšŒ์› ์ •๋ณด๊ฐ€ ์—†์„ ๊ฒฝ์šฐ, ํšŒ์› ์ •๋ณด๋ฅผ ์ƒˆ๋กœ ์ €์žฅ(ํšŒ์›๊ฐ€์ž…)ํ•˜๊ณ  ๋กœ๊ทธ์ธ๊นŒ์ง€ ์„ฑ๊ณต์‹œ์ผœ ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.๊ฐœ๋ฐœ ํ™˜๊ฒฝSpring Boot 3.x.x / Ko..
๐Ÿ’ก SpringMail์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์ผ ์ „์†ก ๊ตฌํ˜„ GitHub - jeongum/spring-mail Contribute to jeongum/spring-mail development by creating an account on GitHub. github.com ๊ฐœ๋ฐœํ™˜๊ฒฝ SpringBoot 3.1.4 kotlin / java 17 build.gradle.kts ์„ค์ • ์‚ฌ์šฉํ•  springframework mail ์„ค์ • ์ถ”๊ฐ€ implementation("org.springframework.boot:spring-boot-starter-mail") application.yml ์„ค์ • ๋ฉ”์ผ ์ „์†ก์— ํ•„์š”ํ•œ smtp ์„ค์ • spring: mail: host: smtp.gmail.com port: 587 username:..
๐Ÿ’ก Refresh Token์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ˆ์ „ํ•œ API ํ†ต์‹ ์„ ๋งŒ๋“ ๋‹ค โžก๏ธ 1ํƒ„ ๋ฐ”๋กœ๊ฐ€๊ธฐ: ์„ค์ • ๋ฐ ํšŒ์›๊ฐ€์ž… โžก๏ธ 2ํƒ„ ๋ฐ”๋กœ๊ฐ€๊ธฐ: JWT ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์› ์ •๋ณด ์กฐํšŒ AccessToken / RefreshToken `AccessToken` ์€ ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. `AccessToken` ์„ ํƒˆ์ทจ ๋‹นํ•  ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ์ •๋ณด๊ฐ€ ํƒˆ์ทจ์ž(๊ณต๊ฒฉ์ž)์—๊ฒŒ ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ ๋  ์ˆ˜ ์žˆ๋‹ค. JWT๋Š” Statelessํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์—์„œ๋Š” ํ•ด๋‹น ํ† ํฐ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ณต๊ฒฉ์ž์ธ์ง€๋„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— AccessToken์˜ ํƒˆ์ทจ๋Š” ๋งค์šฐ ์œ„ํ—˜ํ•˜๋‹ค! RefreshToken ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด AccessToken์˜ ๋งŒ๋ฃŒ ์ฃผ๊ธฐ๋ฅผ ์งง๊ฒŒ ์„ค์ •ํ•˜๊ณ , ์ด๋ฅผ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ๋Š” RefreshToken์„ ๋„์ž…ํ•œ๋‹ค. `..
๐Ÿ’ก ๋ณธ๊ฒฉ์ ์œผ๋กœ JWT๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•œ๋‹ค. ํ•ด๋‹น ์žฅ์—์„œ๋Š” refreshToken ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š”๋‹ค! (๋‹ค์Œ ์žฅ์—์„œ ๊ตฌํ˜„ ์˜ˆ์ • โœ…) โžก๏ธ 1ํƒ„ ๋ฐ”๋กœ๊ฐ€๊ธฐ: SpringSecurity ์„ค์ • ๋ฐ ํšŒ์›๊ฐ€์ž… โžก๏ธ 3ํƒ„ ๋ฐ”๋กœ๊ฐ€๊ธฐ: RefreshToken CustomUser ์ƒ์„ฑ SpringSecurity์—์„œ ์‚ฌ์šฉํ•˜๋Š” `User` ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„, ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” `CustomUser` ํด๋ž˜์Šค ์ƒ์„ฑ //CustomUser.kt class CustomUser ( val id: UUID, userName: String, password: String, authorities: Collection ): User(userName, password, authorities) CustomUserDetailsService..
์ ์ด
'๐Ÿ’ป ๊ฐœ๋ฐœ ์ผ์ง€/SpringBoot' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก