Skip to main content
ネイティブ iOS アプリケーションに Sign In with Apple を使った認証機能を追加できます。実装の詳細については、Auth0 の iOS Swift - Sign In with Apple Quickstart を試すことができます。

仕組み

ネイティブアプリでは、Sign in with Apple のログインフローは次のように動作します。
Sign In with Apple 認証フローの図
  • Steps 1 & 2: ユーザーは iOS デバイス上で Apple の SDK を使って認証を行い、レスポンスで認可コードを受け取ります。アプリを離れてブラウザーでログインする必要はありません。
    nonce は使用しないでください。使用すると、ステップ 4 で Apple へのリクエストが失敗し、Auth0 はユーザーに 400 エラー「Error from Apple connection.」を返します。
  • Step 3: アプリケーションは Auth0 の /oauth/token エンドポイントを呼び出し、Apple の認可コードを Auth0 のトークンと交換します。
  • Step 4 & 5: Auth0 プラットフォームは、認可コードを Apple に送ってトークンと交換します。Auth0 はそのトークンを検証し、トークン内のクレームを使ってユーザーのアイデンティティを構築します。
  • Step 6: Auth0 はユーザープロファイルを保存し、ルールを実行して認可を行った後、要求に応じて Auth0 の () を発行します。これらのトークンは、API を保護し、Auth0 で管理されるユーザーに使用されます。

前提条件

Auth0 で ネイティブアプリ向けに Sign In with Apple を設定する前に、次の要件を満たしている必要があります。
  • Apple Developer アカウント (Apple の有料アカウント) を持っていること。 (iOS Developer University Program に参加している場合を除き、無料トライアルはありません。)
  • まだ完了していない場合は、Apple Developer Portal でアプリを登録 していること。 のアプリケーションの接続設定で使用するため、次の ID とキーを控えておいてください。
    • App ID
    • Apple Team ID
    • Client Secret Signing Key
    • Key ID
  • クラシックログインを使用している場合、またはアプリケーションに Lock.js を埋め込んでいる場合は、Lock.js バージョン 11.16 以降を使用していることを確認してください。

Auth0 で接続を設定して有効にする

Apple Developer アカウントから必要な資格情報を取得したら、Auth0 でアプリケーションのクライアント設定と接続設定を構成します。
  1. Auth0 Dashboard > アプリケーション > アプリケーション に移動し、アプリケーションを選択して、歯車アイコンから設定ページを表示します。
  2. ページ下部で Show Advanced Settings を選択し、次に Device Settings 表示を選択します。Native Social LoginEnable Sign In with Apple トグルを有効にします。
    アプリケーションクライアントの設定: Advanced Device Settings
  3. iOSApp ID フィールドに、ネイティブアプリの App ID/Bundle Identifier を入力します。
  4. Auth0 Dashboard > Authentication > Social に移動し、Create Connection を選択します。
  5. Apple 接続を選択して同意します。
  6. 設定 タブで、次のフィールドに入力します。
    • Apple Team ID
    • Client Secret Signing Key
    • Key ID
      Apple ソーシャル接続の設定
  7. アプリケーション 表示を選択して、この接続をアプリケーションで有効にします。
  8. Save をクリックします。
ネイティブアプリはブラウザーからテストできません。つまり、Apple 接続の Try Connection ボタンは、Web ベースのフローのテストにのみ使用されます。

ログアウト

ネイティブ iOS のログイン実装では標準的なブラウザベースのフローを使用しないため、アプリケーションの管理者はログアウトも適切に実行する必要があります。アプリケーションでログアウトが必要な場合は、次の対応を行ってください。
  • Auth0 のリフレッシュトークンを取り消す
  • iCloud Keychain に保存されている Auth0 のリフレッシュトークンを削除する
  • iCloud Keychain に保存されている Apple のユーザー識別子を削除する また、ログアウトはユーザーの操作 (たとえば「ログアウト」ボタンのクリック) によって発生する場合もあれば、ユーザーが対象のアプリへのアクセスを取り消すことで発生する場合もある点に注意してください。後者は、ネイティブの ASAuthorizationAppleIDProvider.getCredentialState メソッドで確認できます。
Apple の IdP には、要求したスコープ (メールアドレス、名、姓など) が 最初の 応答時の ID トークン でしか返されないという注意点があります。ユーザーの削除のような、より破壊的なログアウト方法を取ると、プロファイル情報が失われる可能性があり、その場合はエンドユーザーがアプリの認可を解除してから再度認可する必要があります。

詳しく見る