Spring Security + JWT를 이용한 자체 Login & OAuth2 Login(구글, 네이버, 카카오) API 구현 (2) - JWT란?
·
Spring/Security
이전 User 관련 클래스 생성에 이어서 다음에는 JWT 관련 클래스를 생성해보려고 합니다. JWT 관련 클래스를 생성하기 전에, JWT가 무엇인지 간단하게 살펴보고자 합니다. 1. JWT(JSON Web Token)란? JWT는 인증에 필요한 정보들을 암호화 시킨 JSON 토큰을 의미합니다. 따라서 JWT를 이용한 인증은 유저를 인증하고 식별하기 위한 Token 기반 인증입니다. JWT는 JSON 데이터를 Base64 URL-safe Encode를 통해 인코딩하여 직렬화한 것이고, 토큰 내부에는 개인키를 통한 전자서명이 들어있습니다. ※ Base64 URL-safe Encode란, 일반적인 Base64 Encode를 URL에서 오류 없이 사용하도록 '+'와 '/'를 각각 '-', '_'으로 표현한 것입..
Spring Security + JWT를 이용한 자체 Login & OAuth2 Login(구글, 네이버, 카카오) API 구현 (1) - 회원(User) 관련 클래스 생성
·
Spring/Security
들어가기 전 처음 프로젝트 진행 시, 아무것도 모르던 상태에서 처음으로 만들어야겠다고 생각이 든 기능이 로그인 기능이었습니다. 처음부터 자체 Login과 OAuth2 Login(소셜 로그인)을 같이 구현해보고 싶었지만, 그 당시에는 지식이 많이 없었기 때문에(지금도 없지만...) 먼저 자체 Login을 구현해보고 OAuth2 Login을 구현해봐야겠다고 생각을 했었습니다. 구글링을 정말 많이 해봤었는데, 자체 Login과 OAuth2 Login을 함께 서술한 블로그 글은 거의 없었습니다. 그래서 구현하기가 정말 힘들었었는데 여러 삽질을 통해 구현하게 되어 기록하고자 합니다! 물론 더 나은 방법이 있을 수도 있지만, 일단 스프링 시큐리티와 JWT를 이용하여 자체 Login과 OAuth2 Login을 함께 ..
Spring Security authorizeRequest.antMatchers() / 인증(Authentication) & 인가(Authorization)의 차이
·
Spring/Security
http.authorizeRequests().antMatchers(”xxx”).permitAll() http.authorizeRequests().antMatchers("/sign-up").permitAll() .anyReqeust().authenticated() ... http.addFilterAfter(jwtAuthenticationProcessingFilter(), LogoutFilter.class); 👉 ”/sign-up” URL에 대해서 permitAll()로 인가 처리를 했다. 나머지 URL에 대해서는 인증을 거친 사용자만 인가 처리를 했다. (인가 처리 : 해당 URL에 접근이 가능하도록 하는 것) 처음 Spring Security를 사용했을 때 코드를 따라치다보니 permitAll()이 무엇..
[Spring] SpringBoot 테스트 시 @WebMvcTest와 @SpringBootTest의 차이
·
Spring/기타
Junit 테스트 시에 @WebMvcTest와 @SpringBootTest를 대표적으로 사용하는데, 두 가지 Test 어노테이션의 차이가 존재한다고 한다. SpringBoot 테스트 시에 두 가지 어노테이션의 차이를 살펴보자. 먼저 Mock과 MockMvc에 대해서 알아보자. ※ Mock이란? 실제 객체를 만들어서 테스트하기가 어려운 경우에, 가짜 객체를 만들어서 테스트하는 기술이다. ※ MockMvc란? MVC에 관련된 Mock 가짜 객체를 말한다. 웹 어플리케이션을 애플리케이션 서버에 배포하지 않고, 테스트용 MVC 환경을 만들어서 요청 및 전송, 응답 기능을 제공해주는 객체이다. 대부분의 어플리케이션 기능을 테스트하기 위해서는 MockMvc 객체를 만들어서 테스트하게 되는데, MockMvc를 @Au..
[Spring] Spring Boot application.yml 환경별 프로필 설정 방법 (SpringBoot 2.4 기준 비교)
·
Spring
Spring Boot 2.4를 기준으로 환경별 프로필 설정하는 방법이 바뀌었다. Spring Boot 2.4 이전spring: profiles: dev #활성 프로필 설정 profiles.include: - devdb # 추가할 프로필 설정 ---spring: profiles: local ---spring: profiles: dev ---spring: profiles: common ---spring: profiles: prod👉 구분자 '---'를 사용해서 여러 프로필을 나누고, 각 파일마다 spring.profiles로 프로필을 설정한다.application.yml에서 spring.profiles로 활성 프로필을 설정하고,추가할 프로필이 있다면 spring.profiles.in..
BE_성하
'Spring' 카테고리의 글 목록 (4 Page)