SpringBoot SpringSecurity 설정 1-2. 인증 객체, 인증 서비스 구현

jeonbang123·2023년 3월 31일
0

springboot

목록 보기
7/14
  • UserDetails - 인증 객체
  • UserDetailsService - 인증 서비스
    인증객체(UserDetails)를 return하는 UserDetailsService의 loadUserByUsername()를 오버라이딩

1. UserDetails

package com.codesign.base.security.model;

import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.Collection;

public class SecurityUser implements UserDetails {

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return null;
    }

    @Override
    public String getPassword() {
        return "test";
    }

    @Override
    public String getUsername() {
        return "test";
    }

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        return true;
    }
}

우선 간단하게 테스트만 하기위해 password, username는 "test", boolean type은 true로 변경

2. UserDetailsService

package com.codesign.base.security.service;

import com.codesign.base.security.model.SecurityUser;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;

@Service
public class CustomUserDetailsService implements UserDetailsService {

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        System.out.println(" UserDetailsService 인증을 받습니다. ");
        // 나중에 DB에서 사용자정보를 조회해 SecurityUesr에 주입!

        return new SecurityUser();
    }
}

단순하게 username으로 사용자정보를 조회하는 서비스!
username과 password를 비교하는 로직은 여기서 하는게 아니라 OncePerRequestFilter를 상속받은 클래스에서 비교한다.

현재 new SecurityUser()에 username, password가 "test"로 하드코딩 되어 있다.


참조 https://sas-study.tistory.com/359

profile
Design Awesome Style Code

0개의 댓글