이번 프로젝트를 진행히면서 소셜 로그인(애플 로그인) 파트를 맡게 되었다. 그래서 프로젝트를 진행하면서 학습한 애플 로그인부터 탈퇴까지의 흐름에 대해 정리해 보았다.
0. Apple OAuth 흐름

Apple OAuth의 전체 적인 흐름은 다음과 같다.
- 클라이언트에서 서버에 회원 가입 요청(Identity Token 등 포함)
- 애플 서버에 public key 요청
- 애플 서버에서 public key 응답
- 받은 public key로 Identity Token 서명 검증 → account id 획득
- client_secret 생성
- 애플 서버에 토큰 요청
- access, refresh 토큰 응답
우리 서비스는 애플의 refresh token은 검증 후 유효 기간이 없어서 자체 JWT 토큰을 사용하였다.
애플에서 발급 받은 토큰을 사용하지 않기 때문에 그림의 1~4까지의 과정으로 id Token을 검증한 후 얻은 애플 고유 id로 회원가입을 진행해주었다.
- 만약 우리 서비스처럼 자체적으로 jwt토큰을 사용해 인가를 하지 않고 Apple 서버에서 받은 token으로만 구현하였다면?
애플 로그인에 들어가기 앞서 주의 깊게 봐야 할 부분은 바로 Identity Token(Id Token) 과 authorizationCode 이다.
- Identity Token은 애플에서 발급한 JWT 토큰이다. 해당 토큰을 통해 사용자의 정보(email, 사용자 고유 아이디)을 얻을 수 있다. Identity Token은 생성 후 10분 뒤 만료 되기 때문에 APP측에서 세션을 유지하기 어렵다. 그래서 애플 서버에 엑세스 토큰과 리프레시 토큰을 요청하게 된다. (우리 서비스는 회원가입 시 해당 과정을 거치지 않는다.)
- authorizationCode은 위에서 언급한 엑세스 토큰과 리프레시 토큰을 애플 서버에서 발급 받는데 사용하게 된다. (해당 코드는 생성 5분 뒤 만료 된다.)