Spring

[์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ๊ธฐ๋ณธ API & Filter ์ดํ•ด] ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ ๋ฐ ์˜์กด์„ฑ ์ถ”๊ฐ€

jeong_ii 2023. 9. 7. 23:51
๐Ÿ“ ์ด ๊ธ€์€ ์ธํ”„๋Ÿฐ ์ธํ„ฐ๋„ท ๊ฐ•์˜ ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ - Spring Boot ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” Spring Security ์—์„œ ๊ธฐ๋ฐ˜๋œ ๊ฒƒ์œผ๋กœ ์—ฌ๊ธฐ์„œ ์ธ์šฉ๋˜๋Š” PPT ์ด๋ฏธ์ง€ ๋˜ํ•œ ๋ชจ๋‘ ํ•ด๋‹น ๊ฐ•์˜์—์„œ ๊ฐ€์ ธ์™”์Œ์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

 

๐Ÿ”น ๊ฐœ๋ฐœํ™˜๊ฒฝ

  • IDE : Intellij IDEA Community
  • Language : Java 8
  • Framework : Spring Boot
  • DataBase : MySQL

 

๐Ÿ”น ์‚ฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • Thymeleaf
  • Lombok

 

๐Ÿ”น ๋ณด์•ˆ์ •์ฑ… ์„ค์ •

  1. ์ž์› ๋ฐ ๊ถŒํ•œ ์„ค์ •
    • ๋งˆ์ดํŽ˜์ด์ง€
      • ์ž์›์„ค์ • : /mypage
      • ๊ถŒํ•œ๋งคํ•‘ : ROLE_USER
    • ๋ฉ”์‹œ์ง€
      • ์ž์›์„ค์ • : /message
      • ๊ถŒํ•œ๋งคํ•‘ : ROLE_MANAGER
    • ํ™˜๊ฒฝ์„ค์ •
      • ์ž์›์„ค์ • : /config
      • ๊ถŒํ•œ๋งคํ•‘ : ROLE_ADMIN
    • ๊ด€๋ฆฌ์ž
      • ์ž์›์„ค์ • : /admin/**
      • ๊ถŒํ•œ๋งคํ•‘ : ROLE_ADMIN
  2. ์‚ฌ์šฉ์ž ๋“ฑ๋ก ๋ฐ ๊ถŒํ•œ๋ถ€์—ฌ
  3. ๊ถŒํ•œ๊ณ„์ฆ์ ์šฉ
    • ROLE_ADMIN > ROLE_MANAGER > ROLE_USER
  4. ๋ฉ”์„œ๋“œ ๋ณด์•ˆ ์„ค์ •
    • ๋ฉ”์„œ๋“œ ๋ณด์•ˆ - ์„œ๋น„์Šค ๊ณ„์ฆ ๋ฉ”์„œ๋“œ ์ ‘๊ทผ ์ œ์–ด
      • io.security.corespringsecurity.aopsecurity.AopMethodService.methodSecured
    • ํฌ์ธํŠธ์ปท ๋ณด์•ˆ - ํฌ์ธํŠธ์ปท ํ‘œํ˜„์‹์— ๋”ฐ๋ฅธ ๋ฉ”์„œ๋“œ ์ ‘๊ทผ ์ œ์–ด
      • execution(public * io.security.corespringsecurity.aopsecurity.*Service.pointcut*(..))
  5. IP ์ œํ•œํ•˜๊ธฐ

 

๐Ÿ”น ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

Intellij IDEA Community๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— https://start.spring.io๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค.

  • Maven Project
  • Spring Boot version : 2.7.15
  • Project Metadata
    • Group : io.security
    • Artifact : basicsecurity
    • Packaging : Jar
    • Java : 8
  • Dependencies
    • Spring Web

ํ”„๋กœ์ ํŠธ GENERATE > ์••์ถ• ํ•ด์ œ > Intellij์—์„œ ํด๋” ์˜คํ”ˆ

 

๐Ÿ”น ์Šคํ”„๋ง๋ถ€ํŠธ ํฌํŠธ ๋ณ€๊ฒฝ

src > main > java > io > security > basicsecurity > BasicsecurityApplication

์„œ๋ฒ„ ๊ฐ€๋™ ์‹œ 8080 ํฌํŠธ๋ฅผ ์ด๋ฏธ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํฌํŠธ๋กœ ๋ณ€๊ฒฝํ•ด ์ฃผ๊ธฐ ์œ„ํ•ด

src > main > resources > application.properties ํŒŒ์ผ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•ด ์ค€๋‹ค.

server.port = 8086

 

๐Ÿ”น ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ์˜์กด์„ฑ ์ถ”๊ฐ€

src > main > java > io > security > basicsecurity > SecurityController ์ƒ์„ฑ

@RestController
public class SecurityController {
    @GetMapping("/")
    public String index(){
        return "home";
    }
}

pom.xml ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ์˜์กด์„ฑ ์ฃผ์ž…

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-security</artifactId>
</dependency>

http://localhost:8086 ์ ‘์† ์‹œ ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๊ฐ€ ์ ์šฉ๋œ๋‹ค.

 

์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ์ ์šฉ ์‹œ ๊ธฐ๋ณธ ๊ณ„์ •์ด ํ•˜๋‚˜ ์ œ๊ณต๋œ๋‹ค.

  • Username : user
  • Password : ๋žœ๋ค ๋ฌธ์ž์—ด

 


 

๐Ÿ”น ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ์˜์กด์„ฑ ์ถ”๊ฐ€ ์‹œ ์ผ์–ด๋‚˜๋Š” ์ผ๋“ค

  • ์„œ๋ฒ„๊ฐ€ ๊ฐ€๋™๋˜๋ฉด ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์˜ ์ดˆ๊ธฐํ™” ์ž‘์—… ๋ฐ ๋ณด์•ˆ ์„ค์ •์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
  • ๋ณ„๋„์˜ ์„ค์ •์ด๋‚˜ ๊ตฌํ˜„์„ ํ•˜์ง€ ์•Š์•„๋„ ๊ธฐ๋ณธ์ ์ธ ์›น ๋ณด์•ˆ ๊ธฐ๋Šฅ์ด ํ˜„์žฌ ์‹œ์Šคํ…œ์— ์—ฐ๋™๋˜์–ด ์ž‘๋™ํ•œ๋‹ค.
    • ๋ชจ๋“  ์š”์ฒญ์€ ์ธ์ฆ์ด ๋˜์–ด์•ผ ์ž์›์— ์ ‘๊ทผ ๊ฐ€๋Šฅ
    • ์ธ์ฆ ๋ฐฉ์‹์€ ํผ ๋กœ๊ทธ์ธ ๋ฐฉ์‹๊ณผ httpBasic ๋กœ๊ทธ์ธ ๋ฐฉ์‹์„ ์ œ๊ณต
    • ๊ธฐ๋ณธ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€, ๊ธฐ๋ณธ ๊ณ„์ • ํ•œ ๊ฐœ ์ œ๊ณต

 

๐Ÿ”น ๋ฌธ์ œ์ 

  • ๊ณ„์ • ์ถ”๊ฐ€, ๊ถŒํ•œ ์ถ”๊ฐ€, DB ์—ฐ๋™ ๋“ฑ
  • ๊ธฐ๋ณธ์ ์ธ ๋ณด์•ˆ ๊ธฐ๋Šฅ ์™ธ์— ์‹œ์Šคํ…œ์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ๋” ์„ธ๋ถ€์ ์ด๊ณ  ์ถ”๊ฐ€์ ์ธ ๋ณด์•ˆ๊ธฐ๋Šฅ์ด ํ•„์š”

 


๐Ÿšจ Error

pom.xml

Spring Security ์˜์กด์„ฑ ์ฃผ์ž… ์ค‘

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-security</artifactId>
</dependency>

Dependency 'org.springframework.boot:spring-boot-starter-security:2.7.15' not found ๋ฐœ์ƒ

 

๐Ÿ’ก ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

File > Invalidate Caches > Invalidate and Restart

 

 

 

 

 

๐Ÿ“ƒ reference