본문 바로가기
개발

Spring Boot와 Spring Security로 안전한 웹 애플리케이션 만들기

by new-fp 2024. 11. 14.
728x90

Spring Boot와 Spring Security로 안전한 웹 애플리케이션 구축하기

안녕하세요, 프로그래밍을 사랑하는 여러분! 오늘은 Spring Boot와 Spring Security를 활용하여 안전한 웹 애플리케이션을 구축하는 방법을 살펴보겠습니다. 이번 포스트에서는 사용자 인증 및 권한 부여를 위한 기본적인 설정 과정에 대해 다루고, 간단한 예제를 통해 실제 작동하는 모습을 보여드릴 것입니다.

들어가며

웹 애플리케이션의 보안은 매우 중요한 요소입니다. 사용자 정보를 안전하게 보호하고, 인증된 사용자만 접근할 수 있도록 하는 것은 개발자로서의 필수적인 책임입니다. Spring Security는 이러한 요구사항을 충족시키기 위한 강력한 도구입니다. 그럼 본격적으로 프로젝트를 생성하고 보안을 적용해 보겠습니다.

프로젝트 생성하기

먼저, Spring Boot 프로젝트를 생성하고 필요한 의존성을 추가해 보겠습니다.

  1. 프로젝트 생성: Spring Initializr(https://start.spring.io/)를 통해 새로운 Spring Boot 프로젝트를 만듭니다.
  2. 디펜던시 추가: 다음과 같은 의존성을 추가합니다.
    • Web: Spring Web
    • Security: Spring Security
    • Thymeleaf: Thymeleaf 템플릿 엔진

뷰 템플릿 설정

이제, 뷰 템플릿을 설정해 보겠습니다. 기본적인 로그인 화면을 구축하기 위해 Thymeleaf를 사용하며, index.html 파일을 생성하여 로그인이 필요한 내용을 작성할 것입니다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Spring Security Example</title>
</head>
<body>
    <h1>Spring Security 인증 데모</h1>
    <form action="/login" method="post">
        <input type="text" name="username" placeholder="아이디" required />
        <input type="password" name="password" placeholder="비밀번호" required />
        <button type="submit">로그인</button>
    </form>
</body>
</html>

위 코드를 사용하면 사용자 이름과 비밀번호를 입력받는 간단한 로그인 폼이 생성됩니다.

기본 보안 설정 추가하기

이제 Spring Security의 기본 설정을 추가해야 합니다. Spring Boot는 기본적으로 모든 요청을 보호하지만, 여기에 우리의 요구에 맞는 사용자 정의 로직을 추가할 수 있습니다. 예를 들어, 로그인 후 사용자가 특정 페이지로 리다이렉션 되도록 설정할 수 있습니다.

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/", "/login").permitAll() // 모든 사용자에게 로그인 페이지 접근 허용
            .anyRequest().authenticated() // 인증된 사용자만 접근 가능
            .and()
            .formLogin()
            .loginPage("/login") // 커스텀 로그인 페이지
            .permitAll();
    }
}

이 설정이 완료되면, 모든 비인증 사용자는 //login 제외한 모든 요청에 대해 접근할 수 없게 됩니다.

실행 결과

모든 설정이 완료되었다면, 서버를 실행하고 브라우저에서 확인해 보세요. 로그인 페이지에 가서 사용자 인증을 시도해 봅시다. 로그인 성공 시, 추가한 index.html 페이지가 표시될 것입니다.

로그인 후 보여질 화면: "Spring Security 인증 데모"

마무리하며

오늘은 Spring Boot와 Spring Security를 통해 안전한 웹 애플리케이션을 구축하는 기본적인 방법을 소개했습니다. 이 포스트가 여러분의 웹 보안 이해에 도움이 되었길 바랍니다. 또한, 이 코드를 바탕으로 더 많은 기능을 추가해 보세요. 사용자 그룹 설정, JWT 인증 방식, OAuth2 통합 등 다양한 확장이 가능합니다.

여러분의 피드백이나 궁금한 점이 있다면 댓글로 남겨주세요. 다음 포스트에서 만나요!

728x90