애플 소셜 로그인 구현(서버 개발자)

애플 소셜 로그인 구현(서버 개발자)

Category
Published
August 8, 2024
Last updated
Last updated September 7, 2024
💡
이 포스트는 현재 작성중입니다

개요

Ios 앱을 개발할 때 소셜 로그인 기능을 포함한다면 애플 내부의 지침으로 Apple ID 로그인을 포함해야 합니다.
 
 

Apple Developer

애플 로그인을 위해서는 애플 개발자 사이트에서 App ID, Key, Service ID를 생성해줘야 한다.

App ID

  1. <인증서, 식별자 및 프로파일(Certificates, Identifiers & Profiles)> → 식별자(Identifiers)로 이동
  1. + 버튼으로 Identifier 추가
  1. App IDs, Services IDs, Pass Type IDs 중 App IDs 선택
  1. App, App Clip중 App 선택
  1. Description에 앱 설명 작성, Bundle ID 작성(애플 로그인을 추가할 앱의 Bundle identifier 권장)아래로
  1. Capabilities에서 Sign In with Apple을 선택
    1. Configure을 눌러 들어갑니다
    2. Sign In with Apple: App ID Configuration에서 Enable as a primary App ID
    3. Server to Server Notification Endpoint에서
  1. 등록하면 App ID가 생성된다. App ID Prefix(Team ID)를 기록해두자
그러나 앱을 배포할 때 App ID를 생성해야 하기에 앱이 배포되거나 배포 준비중이면 App ID는 이미 생성되어 있을 가능성이 높다.

Services ID

  1. <인증서, 식별자 및 프로파일(Certificates, Identifiers & Profiles)> → 식별자(Identifiers)로 이동
  1. + 버튼으로 Identifier 추가
  1. App IDs, Services IDs, Pass Type IDs 중 Services IDs 선택
  1. Description, Identifier 작성
    1. Identifier 값은 App ID생성 할때 사용한 Bundle ID를 역순으로 넣어주는 것을 권장
    2. 예시) com.cat.food → food.cat.com
    3. Services ID Identifier 값은 이후 client_id, aud의 값으로 사용된다
  1. 등록하면 Services ID가 생성된다

Redirect URL 등록

  1. 생성했던 Services ID로 이동
  1. Sign in with Apple 옆의 Configure 누르기
  1. Web Authentication Configuration 진입
    1. Primary App ID에서 생성했던 App ID 선택
    2. Domains and Subdomains에는 애플 로그인을 사용할 웹사이트의 주소 입력
    3. Return URLs에는 Return URLs는 애플 로그인을 한 유저의 정보가 돌아오는 callback 주소

Key 생성

client_secret 생성 시 필요한 private key를 생성한다.
  1. <인증서, 식별자 및 프로파일(Certificates, Identifiers & Profiles)> → Keys로 이동
  1. Key Name 입력, Sign in with Apple 선택, Configure 클릭
  1. 생성했던 App ID 선택
  1. 저장 후 등록하면 키가 생성되고 다운로드가 가능하다. Key ID도 잘 기억해 두자
💡
이때 생성한 키는 다시 다운로드가 불가능 하니 잘 보관해야 한다

서버 구현

Server to Server Notification Endpoint

다음과 같은 상황에서 애플에서 알림을 보내준다.
  • email-disabled : 유저가 이메일 수신을 중단했을 때
  • email-enabled : 유저가 이메일 수신을 활성화했을 때
  • consent-revoked : 유저가 Apple ID 연동 해제했을 때
  • account-delete : 유저가 Apple ID 를 삭제했을 때
이때 해당 알림은 바로오지 않고, 어느정도 딜레이가 있거나 한번에 올 수 있다고 한다.
Request는 POST method로 오며, 다음과 같은 구조를 가진다.
{'payload': 'eyJradjacjdskrpzdigksmsep'}
이를 디코딩 하면
{ "iss": "https://appleid.apple.com/", "aud": "<Bundle Identifier>", "iat": 1508184845, "jti": "<unique events stream id>", "events": { "type": "consent-revoked", "sub": "<user_id>", "event_time": 1508184845 } }
이런식의 값을 받아, 서버에서 처리해주면 된다.

애플 로그인

 

Reference