メインコンテンツへスキップ
ネイティブ iOS アプリケーションに、ユーザーが Sign In with Apple を使用して認証できる機能を追加できます。実装の詳細については、Auth0 の iOS Swift - Sign In with Apple クイックスタート を参照してください。

仕組み

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

前提条件

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
  • Classic Login フローを使用している場合、またはアプリケーションに Lock.js を埋め込んでいる場合は、Lock.js バージョン 11.16 以降を使用していることを確認してください。

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

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

ログアウト

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

詳細情報