[java] 스프링 시큐리티에서의 로그인 폼 커스터마이징

스프링 시큐리티는 웹 애플리케이션의 인증과 인가를 담당하는 프레임워크입니다. 로그인 폼은 대부분의 웹 애플리케이션에서 필요한 기능 중 하나이며, 스프링 시큐리티에서는 이를 커스터마이징할 수 있습니다. 이번 글에서는 스프링 시큐리티에서 로그인 폼을 커스터마이징하는 방법에 대해 알아보겠습니다.

커스터마이징 방법

로그인 폼을 커스터마이징하려면 다음과 같은 스텝을 따라야 합니다.

  1. 스프링 시큐리티 구성 파일에서 WebSecurityConfigurerAdapter를 상속받은 클래스를 생성합니다.
  2. configure(HttpSecurity http) 메서드를 오버라이딩하여 로그인 폼에 대한 설정을 추가합니다.
  3. 커스텀 로그인 폼 페이지를 작성합니다.

아래의 예제 코드를 참고하여 로그인 폼 커스터마이징을 진행해보세요.

@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")
                .defaultSuccessUrl("/")
                .and()
            .logout()
                .logoutUrl("/logout")
                .logoutSuccessUrl("/login?logout")
                .and()
            .csrf().disable();
    }
}

위의 코드에서는 로그인 폼에 대한 설정을 추가했습니다. configure(HttpSecurity http) 메서드를 오버라이딩하고, .formLogin() 메서드를 사용하여 로그인 폼에 대한 구성을 추가합니다.

로그인 폼의 loginPage() 메서드는 커스텀 로그인 페이지를 지정하며, defaultSuccessUrl() 메서드는 로그인이 성공했을 때 이동할 페이지를 지정합니다. 마지막으로 csrf().disable() 메서드는 CSRF 공격 방지 기능을 비활성화합니다.

커스텀 로그인 폼 페이지 작성하기

커스텀 로그인 폼 페이지는 일반적으로 HTML 파일로 작성됩니다. 스프링 부트를 사용한다면, resources 폴더 내에 templates 폴더를 생성하고, login.html 파일을 생성하면 됩니다. 아래는 예시입니다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <h1>Login</h1>
    <form action="/login" method="POST">
        <input type="text" name="username" placeholder="Username">
        <input type="password" name="password" placeholder="Password">
        <button type="submit">Log in</button>
    </form>
</body>
</html>

위의 예제 코드는 간단한 로그인 폼을 작성한 것입니다. 폼의 action 속성은 로그인 요청이 전송될 URL을 지정하며, method 속성은 POST로 지정합니다. 폼 안에는 사용자 이름과 비밀번호를 입력할 수 있는 입력 필드와 로그인 버튼이 포함되어 있습니다.

위의 예제 코드를 참고하여 원하는 대로 로그인 폼을 작성해보세요.

마무리

이번 글에서는 스프링 시큐리티에서 로그인 폼을 커스터마이징하는 방법에 대해 알아보았습니다. 스프링 시큐리티를 사용하여 웹 애플리케이션의 보안을 강화하고자 한다면, 로그인 폼의 커스터마이징은 필수적인 기능 중 하나입니다. 이를 통해 사용자 경험을 개선하고, 웹 애플리케이션의 사용자 인증 과정을 정교화할 수 있습니다.

자세한 내용은 스프링 시큐리티 공식 문서를 참고하시기 바랍니다.