랑아
article thumbnail
Spring Security - OAuth2 인증 3
Spring 2023. 6. 13. 00:47

Spring Security에서의 OAuth2 인증 OAuth2 샘플 애플리케이션 구현 해당 샘플 애플리케이션은 서버 측에서 HTML을 렌더링 해주는 SSR(Server Side Rendering) 방식의 애플리케이션을 구현함 의존성 추가 OAuth2 인증을 사용하기 위해 제일 먼저 해야 할 작업은 OAuth2에 대한 의존성을 추가하는 것 ... dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.spri..

article thumbnail
Spring Security - OAuth2 인증 2
Spring 2023. 6. 12. 23:40

Spring Security에서의 OAuth2 인증 OAuth2 인증을 위한 사전 작업 구글 API 콘솔에서의 OAuth2 설정 구글의 OAuth 2 시스템을 이용하기 위해서는 먼저 구글 API 및 서비스 콘솔에서 OAuth 2 시스템을 이용하기 위한 클라이언트 ID와 Secret을 생성해야 함 1. 프로젝트 생성 메인 화면의 프로젝트 만들기를 클릭함 만약 링크가 보이지 않는다면 상단의 프로젝트 선택을 클릭한 후, 오픈된 팝업에서 새 프로젝트 링크를 클릭함 새로운 프로젝트를 만듦 프로젝트의 이름을 입력하고, 나머지 항목을 디폴트 항목으로 사용하면 됨 생성한 프로젝트는 만들어지기까지 1분 내외의 시간을 기다려야 함 사용 설정된 API 및 서비스 상단에 프로젝트 선택 메뉴를 클릭하고 생성한 프로젝트를 선택함..

article thumbnail
Spring Security - OAuth2 인증 1
Spring 2023. 6. 12. 17:43

OAuth2(Authentication) OAuth2란? 특정 애플리케이션(Client)에서 사용자의 인증을 직접 처리하는 것이 아니라 사용자 정보를 보유하고 있는 신뢰할 만한 써드 파티 애플리케이션(GitHub, Google, Facebook 등)에서 사용자의 인증을 대신 처리해 주고 Resource에 대한 자격 증명용 토큰을 발급한 후, Client가 해당 토큰을 이용해 써드 파티 애플리케이션의 서비스를 사용하게 해주는 방식 OAuth 2를 사용하는 애플리케이션 유형 써드 파티 애플리케이션에서 제공하는 API의 직접적인 사용 Google, Github, Facebook 같은 신뢰할만한 써드 파티 애플리케이션에서 제공하는 API를 직접적으로 사용하는 애플리케이션을 구현하는데 OAuth 2를 사용할 수 ..

article thumbnail
Spring Security - JWT 인증 5
Spring 2023. 6. 12. 01:32

Spring Security에서의 JWT 인증 JWT를 이용한 자격 증명 및 검증 구현 JWT 검증 기능 구현 1. JWT 검증 필터 구현 JWT 검증을 위해 가장 먼저 해야 할 작업은 JWT를 검증하는 전용 Security Filter를 구현하는 것 import com.codestates.auth.jwt.JwtTokenizer; import com.codestates.auth.utils.CustomAuthorityUtils; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.s..

article thumbnail
Spring Security - JWT 인증 4
Spring 2023. 6. 11. 18:39

Spring Security에서의 JWT 인증 JWT 자격 증명을 위한 로그인 인증 구현 기본적인 로그인 인증 흐름 클라이언트가 서버 측에 로그인 인증을 요청함(Username/Password를 서버 측에 전송) 로그인 인증을 담당하는 Security Filter(JwtAuthenticationFilter)가 클라이언트의 로그인 인증 정보를 수신함 Security Filter가 수신한 로그인 인증 정보를 AuthenticationManager에게 전달해 인증 처리를 위임함 AuthenticationManager가 Custom UserDetailsService(MemberDetailsService)에게 사용자의 UserDetails 조회를 위임함 Custom UserDetailsService(MemberD..

article thumbnail
Spring Security - JWT 인증 3
Spring 2023. 6. 11. 17:01

Spring Security에서의 JWT 인증 JWT 적용을 위한 사전 작업 의존 라이브러리 추가 // build.gradle ... dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test&..

article thumbnail
Spring Security - JWT 인증 2
Spring 2023. 6. 11. 16:28

JWT(Json Web Token) 개요 JWT 생성 및 검증 테스트 JWT 생성 및 검증 테스트를 위한 프로젝트 설정 Spring Boot 기반의 템플릿 프로젝트 생성 및 의존 라이브러리 추가 JWT 생성 및 검증 테스트를 수행하기 위해 필요한 JWT 라이브러리 JWT를 위한 대표적인 라이브러리에는 jjwt와 Java JWT가 있으며, Java 진영에서는 jjwt를 가장 많이 사용함 dependencies { // (1) implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-web' testIm..

article thumbnail
Spring Security - JWT 인증 1
Spring 2023. 6. 10. 03:41

JWT(Json Web Token) 개요 토큰 기반 자격 증명 HTTP 프로토콜은 request를 전송한 후, response를 수신하게 되면 연결을 끊는 비 연결성(Connectionless)의 특성을 가지고 있고 또한 request와 response에 대한 상태를 저장하지 않는 비 상태성(Stateless)의 특성이 있기 때문에 로그인 인증이 성공적으로 수행되었다 하더라도 서버 측에서는 매번 request를 수신할 때마다 이 request가 인증된 사용자가 보낸 request인지 알 방법이 없음 이러한 HTTP 특성으로 인해 사용자의 인증이 성공적으로 이루어졌을 때, 인증된 사용자 request의 상태를 유지하기 위한 수단이 필요하게 되었으며 대표적인 수단으로 세션이 있음 세션 기반 자격 증명 방식 ..