작성일 : 2024/02/20
(기술적인 자세한 내용은 #170 참고) 소셜 로그인 시 리액트의 경우, 리디렉션을 통해서만 스프링 서버의 응답 데이터를 받을 수 있어 이를 구현했다. 리액트 외에서 소셜 로그인을 요청할 경우 응답으로 회원 정보와 JWT 토큰 정보를 함께 보낸다.
애플은 Oauth 2.0 표준을 베이스로 한 자체 인증 메커니즘(Sign in with Apple
)을 제공한다. 이 때문에 spring-boot-starter-oauth2-client
을 사용해서 구현한 네이버, 카카오, 구글 로그인과 달리 애플 로그인은 자체적으로 구현해야 했다. 그래서 애플은 로그인 URL이 조금 다르지만 결과는 동일하게 반환되도록 했다.
- 리액트 :
{base_url}/oauth2/authorization/{provider}?redirect_uri=<react-redirect-uri>
- 그 외(앱) :
{base_url}/oauth2/authorization/{provider}
state
매개 변수 분석하여 소셜 로그인 요청을 날린 것이 리액트인지, 앱인지 구분한다.- 리액트 : URL 파라미터로 JWT access token과 refresh token을 첨부하여 리디렉션한다.
- 로그인 성공 시 : {react_url}/oauth2/redirect/success?token=<access_token>&refresh_token=<refresh_token>
- 로그인 실패 시 : {react_url}/oauth2/redirect/fail
- 그 외(앱) : 로그인 성공 시 회원 정보를 바로 전달한다. (
UserInfoResponse
DTO 클래스 참고)
- 리액트 : URL 파라미터로 JWT access token과 refresh token을 첨부하여 리디렉션한다.
애플은 위에서 설명한 Oauth 2.0 표준과 일부 다른 점이 있어 차이점이 있다. 기존에는 클라이언트 측에서 애플 로그인 사이트를 직접 요청했지만, 지금은 서버에서 요청 시 리디렉션 시켜주는 방식으로 변경되었다.
- 리액트 :
{base_url}/oauth2/login/apple?redirect_uri=<react-redirect-uri>
- 그 외(앱) :
{base_url}/oauth2/login/apple
응답은 소셜 로그인과 동일하다.