spring-project

Spring Security를 이용한 Basic Authentication

가는가래 2019. 3. 1. 13:31

Spring Security를 이용한 REST API Basic Authentication


Basic Authentication이란?


REST API 인증을 할 때, username, password로 인증을 하는 방법을 말한다.

username, password를 입력하면 Client에서 username + password를 base64 인코딩을 이용하여 매 request 마다 서버에 전달하면

서버에서는 이를 가지고 사용자인지 아닌지 판단 한다. base64 인코딩을 사용하기 때문에 인코딩 된 문자열이 노출이 되면 쉽게 username, password를

알수 있다. 




SpringSecurity를 이용한 구현

package com.quickguide.backend.config;

import com.quickguide.backend.authentication.service.QuickGuideUserDetailsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired
private QuickGuideUserDetailsService quickGuideUserDetailsService;

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests().anyRequest().authenticated()
.and().httpBasic();
}

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(quickGuideUserDetailsService);
}

@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}


httpBasic() - Basic Authentication을 사용하기 위해 추가 해야 합니다.

userDetailsService 구현은 Spring Security Custom UserDetailsService 구현하기 참조.