은은하게 코드 뿌시기

스프링 시큐리티 기본 설정 / springsecurity 기초 본문

웹/Spring Boot

스프링 시큐리티 기본 설정 / springsecurity 기초

은은하게미친자 2023. 4. 17. 16:16
728x90

스프링 시큐리티 를 설정한 프로젝트를 로컬에서 돌리면

메인 페이지가 뜨는게 아니고 

아래 사진처럼 난 이런거 만든적없는데 하는 페이지가 뜬다.. 

왤까? 

아이디는 머고.. 비밀번호는 뭘쓰라는걸까... 나한테왜.. 이러는걸....ㄲ.ㅏ?

스프링 시큐리티를 추가하면 간단하게 설명하면 아래와같은 흐름으로 진행이 된다.

1. 스프링시큐리티 기본 설정

사용자 인증(Authentication) 스프링 시큐리티은 사용자의 인증을 처리하는데 사용되며, 기본적으로 폼 기반 로그인을 지원합니다. 사용자의 아이디와 비밀번호를 이용하여 인증을 처리하며, 데이터베이스를 사용한 인증을 기본으로 제공합니다.
인가(Authorization) 스프링 시큐리티은 인증된 사용자의 권한을 처리하는데 사용되며, 인가를 통해 사용자가 특정 URL이나 리소스에 접근 가능한지 여부를 결정합니다. 기본적으로 모든 URL에 대한 인가가 설정되어 있어 로그인한 사용자만 접근할 수 있습니다.
세션 관리(Session Management) 스프링 시큐리티은 사용자의 세션을 관리하는데 사용됩니다. 세션은 사용자의 로그인 상태를 유지하고, 세션 관리를 통해 세션 공격과 같은 보안 위협으로부터 보호할 수 있습니다.
CSRF(Cross-Site Request Forgery) 방어 스프링 시큐리티은 CSRF 공격을 방어하기 위한 기능을 제공합니다. CSRF 공격은 사용자의 인증 정보를 도용하여 악의적인 요청을 전송하는 공격입니다. 스프링 시큐리티은 CSRF 토큰을 사용하여 요청의 유효성을 검증하여 이를 방어합니다.
기본 로그인 페이지 스프링 시큐리티은 기본적으로 "/login" URL을 통해 로그인 페이지를 제공합니다. 사용자가 인증되지 않았을 경우에 해당 페이지로 리다이렉트되어 로그인을 처리할 수 있도록 합니다.


인증에 성공하면 정상적으로 기존에 설정한 홈화면을 볼 수있지만
실패하면 인증 실패 화면이 출력됩니다.
기본 인증 정보 스프링 시큐리티은 기본적으로 사용자의 아이디와 비밀번호를 사용하여 인증을 처리합니다. 기본 인증 정보는 "user"라는 사용자 이름과 랜덤한 비밀번호를 가지고 있습니다.

 

+ 기본 name/password 설정이 application.properties에 설정이 가능하다

spring.security.user.name=user
spring.security.user.password=1234

 

+ 그런데 메인페이지에는 로그인이 필요없는데.. 시큐리티를 설정하면 메인페이지 전에 인증을 요구하는걸까?

궁금햇다.

1. 리소스 보호 : 메인페이지가 보호된 리소스에 속할경우

2. 사용자인증 요구 :  시큐리티를 설정하면 사용자의 인증을 요구 할 수 있습니다. 메인페이

3. 보안정책 : 애플리케이션의 보안정책에 따라 메인페이지에서 로그인이 필요한 경우

4. 일관성있는 보안설정 : 스프링 시큐리티를 사용하여 애플리케이션 전체적으로 일관성있는 보안설정을 구현하려는 경우, 메인ㅇ페이지를 포함한 모든 페이지에 로그인이 필요하도록 설정할 수있습니다. 이를 통해 애플리케이션 전체에서 보안이 일관되게 적용되고 관리되며, 보안위협으로부터 더욱 안전하게 보호될 수 있습니다.

 

라고한다.

2. 스프링 시큐리티 활성화하기

  • 메이븐 프로젝트일 경우  pom.xml 에설정
<dependencies>
  <!-- ... 기타 의존성 ... -->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
  </dependency>
</dependencies>
  • 그래들 프로젝트 일 경우 build.gradle 파일 에 설정
dependencies {
  // ... 기타 의존성 ...
  implementation 'org.springframework.boot:spring-boot-starter-security'
}

 

2. 시큐리티 로그설정 바꾸기..

스프링 부트는 기본적으로 INFO 레벨 이상의 로그만 출력하도록 되어있다.

따라서 시큐리티와 관련된 더 많은 로그 메세지를 확인하기 위해서는 로그 레벨을 DEBUG 레벨로 변경 해야한다.

application.properties
logging.level.org.springframework.security=DEBUG

 

위 내용 참고 포스트

https://catsbi.oopy.io/c0a4f395-24b2-44e5-8eeb-275d19e2a536

 

스프링 시큐리티 기본 API및 Filter 이해

목차

catsbi.oopy.io

 

728x90
Comments