dbwp031 / FastCampusClass

0 stars 0 forks source link

[정리] 카카오톡 로그인 #56

Open dbwp031 opened 10 months ago

dbwp031 commented 10 months ago

카카오톡 로그인 기능을 구현하기 위한 공부 내용을 정리한다.

dbwp031 commented 10 months ago

OAuth2.0 기존에는 우리가 직접 회원을 관리하고 있었음. 회원의 민감 정보를 직접 관리해야 함. 보안이 매우 중요함. 법적인 문제가 있음.

인증 책임을 외부에 위임.

다양한 방식이 있음. 전적으로 맡기는 방법. 혹은 인증한 후 회원의 정보를 우리 DB에 저장하는 방법. 우린 후자. 로그인 뒤 일부를 회원 테이블에 동기화시켜 가입시키는 방법.

dbwp031 commented 10 months ago

redirect uri OAuth를 통해 인증을 마친 후, 되돌아올 uri가 필요하다.
기본 redirect URI: {baseUrl}/login/oauth2/code/{registrationId} 이때 registrationIdClientRegistration의 유니크 식별자이다.

dbwp031 commented 10 months ago

Client? 우리는 다른 인증 서비스 서버에 접근하는 거니까 Client이다.

Client Secret Key REST Api를 사용할 때 필요하다. ClientId에 대한 비밀 키.

dbwp031 commented 10 months ago

Security 설정

Registration

Provider OAuth2.0 인증 서비스 제공자 (facebook, google, kakao, ...)
ProviderId 필요

dbwp031 commented 10 months ago

ClientRegistration

OAuth2.0 혹은 OpenID Connect 1.0의 Provider로 등록된 표현이다.

가지고 있는 정보

dbwp031 commented 10 months ago

OAuth Grant Types

dbwp031 commented 10 months ago

유저 정보가 필요할 때

dbwp031 commented 10 months ago

BoardPrincipal BoardPrincipal은 UserDetails를 구현함으로써 Spring Security에서 인식할 수 있도록 해주었다. OAuth2User을 구현하여 OAuth에서 필요로 하는 내용들을 구현한다.

dbwp031 commented 10 months ago

OAuth2UserService<OAuth2UserRequest, OAuth2User>

dbwp031 commented 10 months ago

Optional을 리턴하는 함수를 만드는 이유

UserAccountService로 public Optional<UserAccountDto> searchUser(String username) 함수를 정의했다. UserAccountDto를 곧바로 리턴하지 않고 Optional로 감싸서 리턴하는 경우, 예외 처리를 함수 내부에서 직접하지 않고 외부(상위)에서 처리해줄 수 있다.

dbwp031 commented 10 months ago

보안 설정 강화