๋กœ์ผ“๐Ÿพ
article thumbnail
[AWS] S3 ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ์ฐจ๋‹จ์„ ํ™œ์„ฑํ™” ํ•˜๋ฉด์„œ ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž!!
AWS 2022. 6. 28. 00:21

S3๋Š” ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ์ฐจ๋‹จ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ๋ฒ„ํ‚ท ๋‚ด ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œํ•œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ์ฐจ๋‹จ์„ ํ™œ์„ฑํ™” ํ•˜๊ฒŒ ๋˜๋ฉด ์ž์›์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด s3 ๊ฐ์ฒด์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ S3๋Š” ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ์ฐจ๋‹จ์„ ํ•˜๋ฉด์„œ ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ด์ฃผ๋Š”๋ฐ, ๊ทธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. Pre-Signed-URL ์„ ์ด์šฉํ•˜์—ฌ S3 ๊ฐ์ฒด ์—…๋กœ๋“œ(PUT)/๋‹ค์šด๋กœ๋“œ(GET) ํ•˜๊ธฐ Pre-Signed-URL ์„ ์ด์šฉํ•˜์—ฌ S3 ๊ฐ์ฒด ์—…๋กœ๋“œ(PUT)๋ฅผ ์ง„ํ–‰ํ•˜๊ณ , ๋‹ค์šด๋กœ๋“œ๋Š” ์„œ๋ฒ„๋ฅผ ํ”„๋ก์‹œ๋กœ ๋‘์–ด ์„œ๋ฒ„์—์„œ S3์— ์ ‘๊ทผํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œ(GET)ํ•˜๊ธฐ Pre-Signed-URL ์„ ์ด์šฉํ•˜์—ฌ S3 ๊ฐ์ฒด ์—…๋กœ๋“œ(PUT)๋ฅผ ์ง„ํ–‰ํ•˜๊ณ , ๋‹ค์šด๋กœ๋“œ๋Š” goofys๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ S3..

article thumbnail
[Kotlin] ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ ํ‘œํ˜„์— data ํ•œ์ •์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ผ
... 2022. 6. 16. 21:51

์ด ๊ธ€์˜ ๋‚ด์šฉ์€ [์ดํŽ™ํ‹ฐ๋ธŒ ์ฝ”ํ‹€๋ฆฐ]์„ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ์ „๋‹ฌํ•ด์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ๋ง์ด์ฃ . data class Player( val id: Int, val name: String, val points: Int ) val player = Player(0, "Gecko", 9999) data ํ•œ์ •์ž๋Š” ์•„๋ž˜์˜ ํ•จ์ˆ˜๋“ค์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค. toString equals ์™€ hashCode copy componentN(component1, component2 ๋“ฑ) toString ํด๋ž˜์Šค์˜ ์ด๋ฆ„๊ณผ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ํ˜•ํƒœ๋กœ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ์™€ ๊ฐ’์„ ์ถœ๋ ฅ ํ•ด์ค๋‹ˆ๋‹ค. ์ฃผ๋กœ ๋กœ๊ทธ ์ถœ๋ ฅ์ด๋‚˜ ๋””๋ฒ„๊น… ํ• ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. println(player) // Player(id=0, name=Gecko, p..

article thumbnail
[Spring] Security +Google Oauth2 + JWT ๊ตฌํ˜„ํ•˜๊ธฐ (4) - JWT ์žฌ๋ฐœ๊ธ‰ ํ•ด์ฃผ๊ธฐ
... 2022. 6. 5. 12:44

์ด์–ด์„œ ๊ณ„์† ๊ตฌํ˜„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„ ์ž์ฒด๊ฐ€ ๋ชฉ์ ์ด๋ฏ€๋กœ ์ž์„ธํ•œ ์„ค๋ช…์„ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค. JWT ์ƒ์„ฑํ•˜๊ธฐ JWT์— ๊ถŒํ•œ ์ถ”๊ฐ€ํ•ด์ฃผ๊ธฐ ์ƒ์„ฑํ•œ JWT์— ๋Œ€ํ•ด ์ธ์ฆ/์ธ๊ฐ€ ํ•˜๊ธฐ JWT ์žฌ๋ฐœ๊ธ‰ ํ•ด์ฃผ๊ธฐ (์ง„ํ–‰) ๊ตฌํ˜„ AuthController @RestController @RequestMapping("/auth") class AuthController( private val authService: AuthService ) { /** * token ์ƒ์„ฑํ•ด์„œ ๋ณด๋‚ด์ฃผ๊ธฐ */ @GetMapping("/login") fun login(@AuthenticationPrincipal oAuth2User: OAuth2User): ResponseEntity { return ResponseEntity.ok(authService.login(oAu..

article thumbnail
[Spring] Security +Google Oauth2 + JWT ๊ตฌํ˜„ํ•˜๊ธฐ (3) - ์ƒ์„ฑํ•œ JWT์— ๋Œ€ํ•ด ์ธ์ฆ/์ธ๊ฐ€ ํ•˜๊ธฐ
... 2022. 6. 5. 12:08

์ด์–ด์„œ ๊ณ„์† ๊ตฌํ˜„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„ ์ž์ฒด๊ฐ€ ๋ชฉ์ ์ด๋ฏ€๋กœ ์ž์„ธํ•œ ์„ค๋ช…์„ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค. JWT ์ƒ์„ฑํ•˜๊ธฐ JWT์— ๊ถŒํ•œ ์ถ”๊ฐ€ํ•ด์ฃผ๊ธฐ ์ƒ์„ฑํ•œ JWT์— ๋Œ€ํ•ด ์ธ์ฆ/์ธ๊ฐ€ ํ•˜๊ธฐ (์ง„ํ–‰) JWT ์žฌ๋ฐœ๊ธ‰ ํ•ด์ฃผ๊ธฐ ๊ตฌํ˜„ JwtFilter class JwtFilter( private val jwtProvider: JwtProvider ) : OncePerRequestFilter() { override fun doFilterInternal( request: HttpServletRequest, response: HttpServletResponse, filterChain: FilterChain ) { val jwt = jwtProvider.resolveToken(request) if (StringUtils.hasText(jwt) && ..

article thumbnail
[Spring] Security +Google Oauth2 + JWT ๊ตฌํ˜„ํ•˜๊ธฐ (2) - JWT์— ๊ถŒํ•œ ์ถ”๊ฐ€ํ•ด์ฃผ๊ธฐ
... 2022. 6. 4. 18:36

์ด์–ด์„œ ๊ณ„์† ๊ตฌํ˜„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„ ์ž์ฒด๊ฐ€ ๋ชฉ์ ์ด๋ฏ€๋กœ ์ž์„ธํ•œ ์„ค๋ช…์„ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค. JWT ์ƒ์„ฑํ•˜๊ธฐ JWT์— ๊ถŒํ•œ ์ถ”๊ฐ€ํ•ด์ฃผ๊ธฐ (์ง„ํ–‰) ์ƒ์„ฑํ•œ JWT์— ๋Œ€ํ•ด ์ธ์ฆ/์ธ๊ฐ€ ํ•˜๊ธฐ JWT ์žฌ๋ฐœ๊ธ‰ ํ•ด์ฃผ๊ธฐ ๊ตฌํ˜„ @Component class JwtProvider( private val memberRepository: MemberRepository ) { companion object { private const val AUTHORITIES_KEY = "auth" private const val BEARER_TYPE = "bearer" private const val ACCESS_TOKEN_EXPIRE_TIME = (1000 * 60 * 30) private const val REFRESH_TOKEN_EXPIRE_TIME..

article thumbnail
[Spring] Security +Google Oauth2 + JWT ๊ตฌํ˜„ํ•˜๊ธฐ (1) - JWT ์ƒ์„ฑํ•˜๊ธฐ
... 2022. 6. 4. 18:11

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Spring Security + Google Oauth2 + JWT๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„ ์ž์ฒด๊ฐ€ ๋ชฉ์ ์ด๋ฏ€๋กœ ์ž์„ธํ•œ ์„ค๋ช…์„ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค. ์ง„ํ–‰ํ•˜๊ธฐ ์•ž์„œ Google Oauth2 Client_ID, Client_Secret๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๋ฐ›์œผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค :) ์•„๋ž˜์™€ ๊ฐ™์€ ์ˆœ์„œ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. JWT ์ƒ์„ฑํ•˜๊ธฐ (์ง„ํ–‰) JWT์— ๊ถŒํ•œ ์ถ”๊ฐ€ํ•ด์ฃผ๊ธฐ ์ƒ์„ฑํ•œ JWT์— ๋Œ€ํ•ด ์ธ์ฆ/์ธ๊ฐ€ ํ•˜๊ธฐ JWT ์žฌ๋ฐœ๊ธ‰ ํ•ด์ฃผ๊ธฐ ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” JWT ์ƒ์„ฑํ•˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„ build.gradle.kts import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("org.springframework.boot") version "2.6.8" id("..

profile on loading

Loading...