Skip to content

boyd-dev/SimpleSpringBoot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

78 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

์Šคํ”„๋ง ๋ถ€ํŠธ, ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ, OAuth2๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ JWT ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ๊ตฌ๊ธ€๊ณผ ๋„ค์ด๋ฒ„ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ๋งŒ์ด ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. JWT ์œ ํšจ์‹œ๊ฐ„์€ 300์ดˆ๋กœ ์„ค์ •๋˜์—ˆ๊ณ  ์ž๋™ ์žฌ๋กœ๊ทธ์ธ์ด๋‚˜ ๊ถŒํ•œ ๋ถ€๋ถ„์€ ๊ตฌํ˜„๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ตฌํ˜„ ๋‚ด์šฉ

OAuth2์˜ ์ธ์ฆ ๊ฒฐ๊ณผ๋ฅผ ์„ธ์…˜์— ์ €์žฅํ•˜๋Š” ๋Œ€์‹  JWT ํ† ํฐ์„ ์ƒ์„ฑํ•˜๊ณ  ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ(์›น ๋ธŒ๋ผ์šฐ์ €)์— ์ „์†กํ•ฉ๋‹ˆ๋‹ค. JWT๋ฅผ ์ฟ ํ‚ค์— ์ €์žฅํ•˜๊ฒŒ ๋˜๋ฉด ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ๋ชจ๋“  ์š”์ฒญ์— ํฌํ•จ๋˜์–ด API ์„œ๋ฒ„์— ์ „๋‹ฌ๋˜๊ณ  ์„œ๋ฒ„๋Š” JWT๋ฅผ ํ™•์ธํ•˜์—ฌ ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹คํ–‰ ๋ฐฉ๋ฒ•

  1. ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ์†Œ์ŠคํŒŒ์ผ ๋ฐ›๊ธฐ
    ๊นƒํ—ˆ๋ธŒ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ์†Œ์ŠคํŒŒ์ผ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ, ํ”„๋ก ํŠธ์—”๋“œ๋Š” react.js๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ๋Š” ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค.

    #back-end
    git clone https://github.com/boyd-dev/SimpleSpringBoot.git
    
    #front-end
    git clone https://github.com/boyd-dev/SimpleReactApp.git
    
  2. ํ”„๋กœ์ ํŠธ๋ช… ๋ณ€๊ฒฝํ•˜๊ธฐ
    ์ดํด๋ฆฝ์Šค(๋˜๋Š” STS)์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์—ด๊ธฐ ์ „์— ์ค‘๋ณต๋˜๋Š” ํ”„๋กœ์ ํŠธ๋ช…์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ช…์€ demo-jwt์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ ๋™์ผํ•œ ์ด๋ฆ„์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ settings.gradle์„ ์—ด์–ด์„œ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

    rootProject.name = 'demo-jwt'
    
  3. ์ดํด๋ฆฝ์Šค์—์„œ ํ”„๋กœ์ ํŠธ import ํ•˜๊ธฐ
    ์ดํด๋ฆฝ์Šค ๋ฉ”๋‰ด File>Import>Gradle>Existing Gradle Porject๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. Project root directory๋ฅผ git clone์œผ๋กœ ๊ฐ€์ ธ์˜จ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์ดํด๋ฆฝ์Šค์— ํ”„๋กœ์ ํŠธ ํƒ์ƒ‰๊ธฐ์—์„œ demo-jwt๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  4. ์„ค์ • ํŒŒ์ผ ๋ณ€๊ฒฝํ•˜๊ธฐ(๋กœ์ปฌํ™˜๊ฒฝ ๊ธฐ์ค€)
    application.yml ํŒŒ์ผ์„ ์—ด์–ด์„œ ์„ค์ •์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. #Local ๋ถ€๋ถ„์— ์žˆ๋Š” client-id์™€ client-secret์„ ์ธ์ฆ ๊ณต๊ธ‰์ž์ธ ๊ตฌ๊ธ€๊ณผ ๋„ค์ด๋ฒ„์—์„œ ํ™•์ธํ•˜์—ฌ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. redirect-uri๋Š” ๊ตฌ๊ธ€๊ณผ ๋„ค์ด๋ฒ„์—์„œ ์„ค์ •ํ•œ ์ธ์ฆ์„ฑ๊ณต ํ›„ ํ˜ธ์ถœ๋˜๋Š” URL์ž…๋‹ˆ๋‹ค. ๊ฐ ์ธ์ฆ ๊ณต๊ธ‰์ž์˜ ์„ค์ •์„ http://localhost:8080/oauth2/callback/{google or naver}์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค (๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋Š” /oauth2/callback/์œผ๋กœ ์ •ํ•ฉ๋‹ˆ๋‹ค).

    google:
        client-id: <Your client-id>
        client-secret: <Your client-secret>
        scope: profile, email
        redirect-uri: http://localhost:8080/oauth2/callback/google
        client-name: google                           
    naver:
        client-id: <Your client-id>
        client-secret: <Your client-secret>
        redirect-uri: http://localhost:8080/oauth2/callback/naver
        authorization-grant-type: authorization_code
        client-name: naver
    
  5. ํ”„๋ก ํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์ ํŠธ ์œ„์น˜ ์ง€์ •ํ•˜๊ธฐ
    build.gradle ํŒŒ์ผ์„ ์—ด์–ด์„œ git clone์œผ๋กœ ๋ฐ›์€ ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ”„๋กœ์ ํŠธ ์œ„์น˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

    def frontendDir = "<front-end application project directory>"
    
    
  6. ๋นŒ๋“œํ•˜๊ธฐ
    ํ”„๋กœ์ ํŠธ ํƒ์ƒ‰์ฐฝ์—์„œ demo-jwt๋ฅผ ์„ ํƒํ•˜๊ณ  ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ํด๋ฆญํ•˜์—ฌ Gradle>Refresh Gradle Project๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

    ์ดํด๋ฆฝ์Šค ๋ฉ”๋‰ด Window>Show View>Gradle>Gradle Tasks๋ฅผ ์˜คํ”ˆํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ฆฌ์—์„œ build ํด๋”๋ฅผ ์—ด์–ด์„œ build ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜๊ณ  ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ํด๋ฆญํ•˜์—ฌ Run Gradle Tasks๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  7. ์ •์  ๋ฆฌ์†Œ์Šค ํ™•์ธํ•˜๊ธฐ
    ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋นŒ๋“œ๋˜๋ฉด์„œ ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋„ ํ•จ๊ป˜ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค(ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ /resources/static/ ํ•˜์œ„๋กœ ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค). ์Šคํ”„๋ง ๋ถ€ํŠธ ์•ฑ ์‹คํ–‰ ์ „์— /resources/static/๋ฅผ F5๋กœ ๋ฆฌํ”„๋ ˆ์‹œ ํ•˜์—ฌ ๋ฆฌ์•กํŠธ ๋นŒ๋“œ๊ฐ€ ๋ณต์‚ฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  8. ์Šคํ”„๋ง ๋ถ€ํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰
    Boot Dashboard์—์„œ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•œ ํ›„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:8080์— ์ ‘์†ํ•˜์—ฌ ๋™์ž‘์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๐Ÿš€

About

Spring Boot, Spring Security, JWT

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors