본문 바로가기

전체 글

(48)
스프링 부트 3 백엔드 개발자 되기_21 10장 OAuth2로 로그인/로그아웃 구현하기 OAuth는 제3의 서비스에 계정 관리를 맡기는 방식 ex)네이버로 로그인하기, 구글로 로그인하기 관련 용어 정리 리소스 오너: 자신의 정보를 사용하도록 인증 서버에 허가하는 주체, 서비스를 이용하는 사용자가 리소스 오너에 해당 리소스 서버: 리소스 오너의 정보를 가지며 리소스 오너의 정보를 보호하는 주체를 의미, 네이버,구글,페이스북이 리소스 서버에 해당 인증 서버: 클라이언트에게 리소스 오너의 정보에 접근할 수 있는 토큰을 발급하는 역할을 하는 애플레케이션을 의미 클라이언트 애플리케이션: 인증 서버에게 인증을 받고 리소스 오너의 리소스를 사용하는 주체를 의미, 지금 만들고 있는 서비스가 이에 해당 클라이언트가 리소스 오너 정보를 취득할 수 있는 방법은 4..
스프링 부트 3 백엔드 개발자 되기_20 9.3 토큰 API구현하기 리프레시 토큰을 전달받아 검증하고 유효한 리프레시 토큰이라면 새로운 액세스 토큰을 생성하는 토큰 API를 구현합니다. @DisplayName("createNewAccessToken: 새로운 액세스 토큰을 발급한다.") @Test public void createNewAccessToken() throws Exception{ //given 테스트 유저를 생성하고 jjwt라이브러리를 이용해 리프레시 토큰을 만들어 데이터베이스에 저장 //토큰생성 API의 요청 본문에 리프레시 토큰을 포함하여 요청 객체를 생성 final String url = "/api/token"; User testUser = userRepository.save(User.builder() .email("user@gm..
스프링 부트 3 백엔드 개발자 되기_19 @SpringBootTest public class TokenProviderTest { @Autowired private TokenProvider tokenProvider; @Autowired private UserRepository userRepository; @Autowired private JwtProperties jwtProperties; //generateToken() 검증 테스트 @DisplayName("generateToken(): 우저 정보와 만료 기간을 전달해 토큰을 만들 수 있다") @Test void generateToken() { //given 토큰에 유저 정보를 추가하기 위한 테스트 유저를 만듭니다 User testUser = userRepository.save(User.build..
스프링 부트 3 백엔드 개발자 되기_18 @RequiredArgsConstructor @Service public class TokenProvider { private final JwtProperties jwtProperties; public String generateToken(me.shinsunyoung.springbootdeveloper.domain.User user, Duration expiredAt){ Date now = new Date(); return makeToken(new Date(now.getTime() + expiredAt.toMillis()), user); } //JWT 토큰 생성 메서드, 인자는 만료시간과 유저 정보를 받는다 이메서드는set계열 메서드를 통해 여러 값을 지정 private String makeToken(D..
스프링 부트 3 백엔드 개발자 되기_17 회원가입되고 db에 데이터 들어간거까지 체크했는데 로그인이 안됨=> @Override public boolean isAccountNonLocked() { return true; } 여기 true를 false라고 해놔서 안된거였음 9장 JWT로 로그인/로그아웃 구현하기 학습목표 : 토큰 기반 인증과 JWT,리프레시 토큰의 개념을 이해하고 토큰 기반 인증인 JWT 토큰 서비스를 구현하고 적용합니다 사용자가 서버에 접근할 때 이 사용자가 인증된 사용자인지 확인하는 방법은 다양함 대표적인 사용자 인증 확인 방법에는 서버 기반 인증과 토큰 기반 인증이 있다. 세션 기반 인증? 스프링 시큐리티에서는 기본적으로 세션 인증을 제공 8장같은 경우 스프링 시큐리티에서 기본적으로 제공해주는 세션 기반 인증을 사용해 사용자마..
스프링 부트 3 백엔드 개발자 되기_16 WebSecurityConfig클래스 오류 @RequiredArgsConstructor @Configuration public class WebSecurityConfig { private final UserDetailService userService; //스프링 시큐리티 기능 비활성화 //스프링 시큐리티의 모든 기능을 사용하지 않게 설정하는 코드다 //인증인가 서비스를 모든 곳에 적용하지 않는다는것, 일반적으로 정적 리소스(이미지,html파일)에 설정 @Bean public WebSecurityCustomizer configure(){ return (web) -> web.ignoring() .requestMatchers(toH2Console()) .requestMatchers("/static/**");..
스프링 부트 3 백엔드 개발자 되기_15 UserDetails 이거 가져다 쓸 수 있는 라이브러리 인식이 안돼서 한참 찾았는데 결국 //스프링 시큐리티를 사용하기 위한 스타터 추가 implementation 'org.springframework.security:spring-security-core:6.0.1' 이렇게 추가해야 하는데 implementation 'org.springframework.boot:spring-boot-strater-security-core:6.0.1' 이거를 추가해서 그런거였다 UserDetails 클래스는 스프링 시큐리티에서 사용자의 인증 정보를 담아두는 인터페이스 스프링 시큐리티에서 해당 객체를 통해 인증 정보를 가져오므로 필수 오버라이드 메서드가 있다
스프링 부트 3 백엔드 개발자 되기_14 8장 스프링 시큐리티로 로그인/로그아웃, 회원가입 구현하기 8-1 스프링 시큐리티? 인증과 인가 인증: 사용자의 신원을 입증하는 과정 ex)사용자가 사이트에 로그인할 때 누구인지 확인하는 과정 인가: 사이트의 특정 부분에 접근할 수 있는지에 권한을 확인하는 작업 ex)관리자는 관리자 페이지에 들어갈 수 있지만 일반 사용자는 못들어감 이런 권한을 확인하는 과정을 인가 인증과 인가 관련 코드를 생으로 작성하려면 시간이 많이 필요하나 스프링 시큐리티를 사용하면 간단하게 처리 가능 스프링 시큐리티: 스프링 기반 애플리케이션의 보안을 담당하는 스프링 하위 프레임 워크 보안 관련 옵션을 많이 제공 애너테이션으로 설정하기도 쉽다 CSRF 공격, 세션 고정 공격을 방어해주고 요청헤더도 보안 처리를 해줘서 개발자가 보안..