Spring

[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ๊ธฐ์ดˆ ๊ฐœ๋…

DAHLIA CHOI 2023. 10. 31. 18:43

๊ฐ•์˜๋“ค์œผ๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ๋“ค์„ ๊ฐ„๋‹จํ•˜๊ฒŒ๋ผ๋„ ๋‚จ๊ฒจ๋ณด๋ ค๊ณ  ํ•œ๋‹ค! ๐Ÿฅ

 

Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ)๋ž€?

Spring ๊ธฐ๋ฐ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ์„ ๋‹ด๋‹นํ•˜๋Š” Spring ํ•˜์œ„ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. 

 

springboot์— spring security๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜ ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•ด์ค˜์•ผํ•œ๋‹ค.

implementation 'org.springframework.boot:spring-boot-starter-security'

 

์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์˜ ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์€?

  • ์„œ๋ฒ„๊ฐ€ ๊ฐ€๋™๋˜๋ฉด ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์˜ ์ดˆ๊ธฐํ™” ์ž‘์—… ๋ฐ ๋ณด์•ˆ ์„ค์ •์ด ์ด๋ฃจ์–ด์ง
  • ๋ณ„๋„์˜ ์„ค์ •์ด๋‚˜ ๊ตฌํ˜„์„ ํ•˜์ง€ ์•Š์•„๋„ ๊ธฐ๋ณธ์ ์ธ ์›น ๋ณด์•ˆ ๊ธฐ๋Šฅ์ด ํ˜„์žฌ ์‹œ์Šคํ…œ์— ์—ฐ๋™๋ผ ์ž‘๋™
    • ๋ชจ๋“  ์š”์ฒญ์€ ์ธ์ฆ์ด ๋˜์–ด์•ผ ์ž์›์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅ
    • ์ธ์ฆ ๋ฐฉ์‹์€ Form ๋กœ๊ทธ์ธ ๋ฐฉ์‹๊ณผ httpBasic ๋กœ๊ทธ์ธ ๋ฐฉ์‹์„ ์ œ๊ณตํ•œ๋‹ค.
    • ๊ธฐ๋ณธ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ์ œ๊ณต
    • ๊ธฐ๋ณธ ๊ณ„์ • ํ•œ ๊ฐœ ์ œ๊ณต
      • username : user
      • password : ๋žœ๋ค ๋ฌธ์ž์—ด (ํ”„๋กœ์ ํŠธ ์‹คํ–‰ ๋˜๋Š” ๋””๋ฒ„๊น…ํ•˜๋ฉด ์‹คํ–‰์ฐฝ์— ๋‚˜ํƒ€๋‚œ๋‹ค. )
      • ์œ„์— ๋‘ ๊ฐœ๋Š” ๋‚˜์ค‘์— SecurityConfig์—์„œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๋‹ค!

 

๊ธฐ๋ณธ์ ์ธ ์‹œํ๋ฆฌํ‹ฐ ์„ค์ •์—์„œ ์•„์‰ฌ์šด ์ 

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

 

 

์ „์ฒด์ ์œผ๋กœ ๋ณธ ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ

  • WebSecurityConfigurerAdapter : ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์˜ ์›น ๋ณด์•ˆ ๊ธฐ๋Šฅ ์ดˆ๊ธฐํ™” ๋ฐ ์„ค์ •์„ ๋‹ด๋‹นํ•˜๋Š” ํด๋ž˜์Šค โ†’ httpSecurity ์ƒ์„ฑ
    • ๊ทผ๋ฐ ํ˜„์žฌ ์Šคํ”„๋ง ๋ฒ„์ „์ด ์—…๋ฐ์ดํŠธ๋˜๋ฉด์„œ ์–ด๋Œ‘ํ„ฐ๋Š” ์ œ๊ณตํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค!
  • httpSecurity : ์„ธ๋ถ€์ ์ธ ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” API ์ œ๊ณต
    • ์ธ์ฆ๊ณผ ์ธ๊ฐ€ API๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ

 

 

๊ธฐ๋ณธ์ ์ธ SecurityConfig ์„ค์ •

@Configuration
@EnableWebSecurity
public class SecurityConfig{

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {

        http.authorizeHttpRequests()
                        .anyRequest().authenticated();

        http
                .formLogin(withDefaults());

        return http.build();
    }


}
  • @EnableWebSecurity : ํ•ด๋‹น ์–ด๋…ธํ…Œ์ด์…˜์„ ์ž‘์„ฑํ•ด์•ผ ์›น ๋ณด์•ˆ์ด ํ™œ์„ฑํ™” ๋œ๋‹ค !!

 

 

๐Ÿ‘‰ ์ด๋ ‡๊ฒŒ ๊ธฐ๋ณธ์ ์ธ ์„ค์ •์„ ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด ๋กœ๊ทธ์ธํ•˜๋Š” ํŽ˜์ด์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค! 

์ด๋•Œ, ์ผ์ผํžˆ ๋กœ๊ทธ์ธํ•˜๊ธฐ ์‹ซ์œผ๋ฉด application.properties ๋˜๋Š” application.yml ํŒŒ์ผ์— ์•„๋ž˜์ฒ˜๋Ÿผ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋จ

spring.security.user.name=user
spring.security.user.password=1111

 

 

 

 


ํ•ด๋‹น ๊ธ€์€ ์ธํ”„๋Ÿฐ์˜ ์Šคํ”„๋ง์‹œํ๋ฆฌํ‹ฐ-Spring Boot ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” Spring Security๋ฅผ ๋ณด๊ณ  ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.