Spring Security 7

OAuth2 구현

OAuthService 예시 코드는 KAKAO의 OAuth 로그인을 사용하겠습니다. 기능의 목적은 사용자의 정보를 Resource 서버에서 응답으로 받은 뒤 DB에 사용자의 정보를 저장하는 것입니다. 1. 사용자의 인증 사용자가 인증 서버에서 인증 성공시 인증을 성공했다는 명세서인 CODE를 등록해놓은 Redirect URI에 쿼리 파라미터에 추가되서 받게 됩니다. 2. 인증 완료후 Token 발급 CODE를 이용해서 Client(내가 만든 어플리케이션의 서버)가 외부 서비스의 인증서버에게 Token을 요청합니다. 인증이 성공했는데 Token을 통해 인증을 한번 더 하는이유는 인증받은 것은 사용자이지만 사용자가 Resource 서버에 요청을 하는 것이 아닌 Client가 요청을 하는 것이기 때문에 이번엔..

Spring Security 2024.02.07

OAuth2란

OAuth2가 필요한 이유 사용자가 어떤 서비스를 이용하기 위해서는 대부분 로그인을 해야합니다. 하지만 사용자는 자신의 정보를 여러 어플리케이션에 등록하는 것이 좋지는 않습니다. OAuth2는 인증과 인가를 외부 서버에 위임해서 사용자의 비밀번호와 같은 중요한 정보를 해당 어플리케이션에서 알리지 않고 서비스를 사용할 수 있습니다. 또한 어플리케이션의 입장에서는 인증과 인가에 대한 작업을 위임하기 때문에 Session과 같이 서버에 부담이 가는 기능을 하지 않을 수 있다는 장점이 있습니다. OAuth2 동작 과정 OAuth2의 동작과정은 아래 사진과 같습니다. 위의 사진에 있는 박스안에 요소들은 OAuth2의 구성 요소입니다. Client 인증을 요청하는 서버 즉, 개발한 어플리케이션 Resource Ow..

Spring Security 2024.02.05

JWT 로그인 구현

JWT 사용시 로그인 처리 흐름 JWT를 이용해서 사용자 인증을 처리할 경우에 로그인 요청을 처리하는 과정을 알아 보겠습니다. Basic,Form로그인을 사용하지 않기 때문에 Controller에 직접 login URL을 매핑하고 Login 처리 Service를 만들어야 합니다. 이 때 로그인 처리 Service에는 로그인 성공시 사용자의 요청에 있는 Login 데이터로 JWT를 생성하는 로직까지 추가해 줘야 합니다. JWT를 생성하는 Provider와 JWT를 담당하는 Filter는 저번 글 에서 설명했으니 넘어가겠습니다. LoginService LoginService의 메서드는 사용자가 로그인 요청 시 전송하는 데이터를 DB의 데이터와 비교하는 로직과 일치시 JWT를 생성하는 로직이 있어야 합니다. ..

Spring Security 2024.02.04

JWT

JWT 로그인 흐름 JWT로 로그인을 구현했을 때 과정을 알아보겠습니다. 처음으로 로그인 요청을 한 사용자는 DB에서 요청 정보가 맞는지 UsernamePasswordAuthentcationFilter를 통해 검증을 한 뒤에 JWT Token을 생성합니다. JWT Token 내부에는 accessToken과 refreshToken이 있습니다. accessToken은 사용자가 요청을 보낼 때 Header에 담아서 보낸뒤 사용자의 인증에 사용하는 Token입니다. refreshToken은 accessToken이 만료되었을 때 새로운 accessToken을 생성할 때 사용하는 Token입니다. 이 두개의 Token을 생성한 뒤에 정의한 JWTToken에 담아서 사용자에게 보내주는 방식으로 로그인을 처리합니다. ..

Spring Security 2024.01.29

Session VS JWT

Session & Cookie session이란 사용자가 어플리케이션에 로그인을 했을 때 사용자의 정보를 일정 시간동안 저장하는 서버의 저장공간입니다. Cookie 서버에서 생성한 사용자 식별정보를 Client에게 응답으로 주고 Client가 요청을 보낼 때마다 Cookie와 함께 보내서 사용자의 인증을 하는 방식에서 사용됩니다. 세션과 쿠키는 다른 개념이지만 두개 모두 사용자의 정보를 유지하기 위한 기능입니다. 두 가지 방법중 하나만 사용해도 되지만, 세션은 서버에 저장공간을 사용하므로 자원의 낭비를 줄이기 위해 쿠기와 같이 사용하는 식으로 사용자의 정보를 유지합니다 JWT JWT는 Json Web Token의 약자로 인증을 위해 사용됩니다. Token의 인증 과정은 사용자가 로그인 요청을 하면 서버에..

Spring Security 2024.01.18

로그인 인증 과정

Spring security에서의 인증 과정 위 그림이 사용자가 Post /login으로 요청했을 때의 인증을 하는 과정을 나타낸 것입니다. 모르는 단어들이 정말 많지만 각자의 역할을 알게되면 이름이 저렇게 지어진 이유도 알 수 있습니다. 일단 요청의 처리과정을 보겠습니다. 1. Client의 Post /login 요청을 Filter가 받음 2. 요청을 받은 Filter에 따라 사용자의 인증에 관한 정보를 추출한뒤 Token을 생성 3.생성한 Token을 AuthenticationManager에게 전달하면 UserDetailsService에서 DB를 조회해 Data추출 4. 추출한 Data를 UserDetails객체로 생성 5. AuthenticationProvider에서 추출한 UserDetails객체..

Spring Security 2024.01.16

Spring Security (Before Learning)

Spring Security란 spring security는 spring 프레임워크에서 인증과 권한에 대한 처리 기능을 쉽게 할 수 있게 제공되는 프레임워크입니다 Spring Security에서 중요한 개념은 인증과 권한(인가)입니다. 인증(Authentication) 인증이란 쉽게 말해서 요청을 보내는 사람이 누구인지를 확인하는 것입니다 인가(Authorization) 인가란 이 사람이 누구인지는 알았는데 이 사람이 어떤 기능까지 사용할 수 있는지 확인하는 것입니다. Spring Security 들어가기전 처음에 Security에 대해 공부를 하다보면 모르는 용어들도 많고 처음으로 보는 개념이기 때문에 어렵게 느껴집니다. 그래서 저는 처음에 공부할 때 같은 글을 여러번보고 같은 영상을 여러번 들어야 이..

Spring Security 2023.08.06