뭐라도 끄적이는 BLOG

Spring Security개요 및 Setup 본문

SpringFramework/Spring Security

Spring Security개요 및 Setup

Drawhale 2023. 7. 7. 18:03

Spring Security란

Spring Security는 인증, 권한 부여, 일반적인 공격에 대한 보호 기능을 제공하는 프레임워크이다. Servlet Application과 Reactive Application 모두 보안을 최고 수준으로 지원하며, Spring 기반 애플리케이션 보안을 위한 사실상의 표준이다.

Setup

start.spring.io에서 아래와 같이 Spring Security 프로젝트를 간단히 생성해본다. 이후 해당 프로젝트를 지속적으로 변경하면서 Spring Security에 대한 설명을 이어나갈 것이다. 해당 Spring Security 시리즈는 Spring Boot 3.0.0이후에 적용되는 Spring Security를 기준으로 작성한다.

간단하게 Web과 Security Dependency만 넣어주었다.

Spring Security Setup Test

Spring Security는 의존성만 추가하면 자동으로 Spring Security관련 Filter들이 적용된다. 이번 테스트는 단순히 Security만 추가했을 뿐인데 생기는 변화정도만 확인해볼 것이다.

package com.example.springsecuritytutorial.controller;


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {
    @GetMapping("/")
    public String home() {
        return "Welcome home";
    }
}

서버에 정상적으로 접근했을때 어떻게 변화하는지 살펴보기 위해 root경로에 대해서 간단히 Welcome home이라는 문자열만 반환하는 HelloController를 추가한뒤 실행한다.

처음 실행하면 Spring Security는 임의의 사용자와 비밀번호를 생성한다. 사용자 아이디의 기본 값은 user이며 비밀번호는 콜솔에서 생성된 비밀번호를 알려준다. 특별한 설정을 아무것도 하지 않았기 때문에 비밀 번호는 실행시마다 생성되어 매번 변경된다.

본래는 localhost:8080으로 접근하게 되면 HelloController에 Mapping된 메소드로 요청이 들어간뒤 결과값을 반환한다. 하지만 Spring Security에서 자동으로 Filter를 추가하였기 때문에 로그인 화면이 먼저 보이게 된다. 해당 로그인 화면에 생성된 사용자의 아이디와 비밀번호를 입력하면 정상적으로 Welcome home을 볼 수 있다.

Spring Security에서 로그인은 기본적으로 Session Cookie방식을 사용하기 때문에 Cookie에서 SessionID를 확인할 수 있다.

상세히 보면 login페이지로 리다이렉션 된것을 확인할 수 있다. 이는 Spring Security가 기본으로 제공해주는 방법이며 언제든 변경할 수 있다.

기본으로 제공해주는 user와 password를 변경해 줄수도 있다. application.properties또는 application.yml과 같은 설정파일에서 변경해주면 된다. yaml이 더 가독성이 좋기 때문에 설정부분은 계속 yaml로 작성할 것이다.

spring:
  security:
    user:
      name: member
      password: member

설정후 프로젝트를 다시 실행해 보면 더이상 password를 생성하지 않고 로그인 화면에서 설정에서 입력한 member로 접근할 수 있게 된다. 당연한 이야기겠지만 테스트 용도로만 이용하는 방법이다. 당장 다음장에서 코드로 간단히 User를 생성하는 방법을 확인해 볼 것이다.

반응형

'SpringFramework > Spring Security' 카테고리의 다른 글

Custom UserDetailsService & Custom User  (0) 2023.07.10
Multiple SecurityChain  (0) 2023.07.09
Spring Security OAuth(Google)  (0) 2023.07.09
Spring Security Embedded H2 Database 사용 방법  (0) 2023.07.08
Security Configuration  (0) 2023.07.07