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 구현하기 참조.
'spring-project' 카테고리의 다른 글
Spring Boot 에서 JSP 사용하기 위한 라이브러리 추가 (0) | 2019.09.13 |
---|---|
Spring Boot 최초 실행 시 'Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. ' (0) | 2019.09.10 |
REST API 인증 방법 (0) | 2019.03.01 |
Spring Security Custom UserDetailsService 구현하기 (0) | 2019.02.24 |
SpringBoot Logback.xml 추가 (로그 설정) (0) | 2019.02.24 |