Spring Security 로그인 구현
Authentication 인증
인증(authentication)은 자신이 누구라고 주장하는 사람을 확인하는 절차이다.
사용자가 누구인지를 증명하는 과정이다 (Who are you?)
Authorization 권한 부여(인가)
권한부여(authorization)는 가고 싶은 곳으로 가도록 혹은 원하는 정보를 얻도록 허용하는 과정이다. 사용자의 권리를 검증하는 과정이다 (What you can do)
Spring Security
로그인 페이지를 구현하기 위해서는 Spring Security의존성을 다운받아야한다.
로그인 과정
일반적으로 사용자가 로그인을 하게되는 과정에 대해 살펴보면 아래와 같다
- 로그인 페이지 접근
- 로그인에 필요한 ID, 비밀번호 제공
- Cookie에 사용자의 session id를 작성
- session id를 가진 요청에 대하여 사용자 검증
Spring Security의 동작 구조
SecurityConfig에서 WebSecurityConfigurerAdapter을 상속 받아 UserDtailsService로 spring Security에서 유저의 정보를 가져온다.
@Configuration
@EnableWebSecurity //스프링 시큐리티의 웹 보안 기능의 초기화 및 설정들을 담당
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
private final UserDetailsService userDetailsService; //spring Security에서 유저의 정보를 가져오는 인터페이스
private final NaverOauthService naverOauthService;
public WebSecurityConfig(
@Autowired CustomUserDetailsService customUserDetailsService,
@Autowired NaverOauthService naverOauthService){
userDetailsService = customUserDetailsService;
this.naverOauthService = naverOauthService;
}
configure(HttpSecurity http)함수를 사용해 보안 설정을 정의할 수 있다.
나의 경우 MVC 패턴으로 view를 부트스트랩에 적용하면서 Css, js등의 내용도 같이 추가가 필요했다.
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest()
.permitAll()
;
}
}
프로젝트에대한 설명
- 컨트롤러를 통해 id(username)과 pw를 받는다
- Dto -> Repository -> Entity로 저장되는 순서인데 여기서 Repository의 findByUsername 함수가 들어온값을 CustomUserDetailsService 클래스에서 검증받는다
- WebSecurityConfig에서 결과에따라 url로 보내도록 함
참고자료
Author And Source
이 문제에 관하여(Spring Security 로그인 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jupiter-j/Spring-Security-로그인-구현저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)