Skip to main content

AI を使って Auth0 を統合する

Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使えば、agent skills を利用して数分で Auth0 の認証を自動的に追加できます。インストール:
次に、AI アシスタントにこう依頼します。
AI アシスタントが Auth0 アプリケーションの作成、資格情報の取得、Auth0.swift SDK の依存関係の追加、Auth0.plist の設定、コールバックURLの設定、ログイン/ログアウトフローの実装を自動的に行います。agent skills の完全なドキュメント →

はじめに

1

新しいプロジェクトを作成する

このクイックスタート用に、新しい iOS または macOS プロジェクトを作成します。Xcode で:
  1. FileNewProject (または ⌘+Shift+N)
  2. 次のいずれかを選択します。
    • iOS タブ → App テンプレート
    • macOS タブ → App テンプレート
  3. プロジェクトを設定します。
    • Product Name: Auth0-Sample
    • Interface: SwiftUI
    • Language: Swift
    • Use Core Data: オフ
    • Include Tests: オン (推奨)
  4. 保存場所を選択し、Create をクリックします
これにより、SwiftUI と Swift Package Manager に対応した標準的なアプリが作成され、Auth0 との連携に最適です。
2

Auth0 SDK を追加

お好みの package manager を使って、プロジェクトに Auth0 SDK を追加します。
Xcode の場合:
  1. FileAdd Package Dependencies… (または ⌘+Shift+K)
  2. Auth0 SDK の URL を入力します。
  3. Add Package → アプリのターゲットを選択 → Add Package
3

Auth0 の設定

新しいAuth0アプリケーションを作成し、コールバックURLを設定します。
  1. Auth0 Dashboard を開きます
  2. アプリケーション > Create Application > 名前を入力し、Native を選択 > Create
  3. 設定 タブで、Client IDDomain を控えておきます
  4. 次のURLを Allowed Callback URLs に追加します:
  1. 次のURLを Allowed Logout URLs に追加します:
  1. Save Changes をクリックします
4

アプリの資格情報を設定

プロジェクトのディレクトリにAuth0.plistを作成します:
Auth0.plist
Auth0.plistをXcodeにドラッグし、“Add to target”にチェックが入っていることを確認します。
5

認証サービスを作成する

ログイン、ログアウト、トークンの保存を処理する AuthenticationService.swift を作成します。
トークンの保存には CredentialsManager を使用します。 CredentialsManager クラスは資格情報を Keychain に安全に保存し、期限切れのアクセストークンを自動的に更新します。必ずこれを使用し、トークンをメモリ、UserDefaults、または localStorage に保存しないでください。
  1. プロジェクトを右クリック → New File…Swift File
  2. 名前を AuthenticationService にします
  3. 内容を次のように置き換えます:
AuthenticationService.swift
6

認証フローを設定する(任意)

ユーザー体験を向上させるには、次の方法でシステムアラートを最小限に抑えられます。
  1. Universal Links を使用する: リダイレクト中に表示される「“AppName”で開きますか?」という確認が出なくなります。注: ASWebAuthenticationSession の権限アラートは引き続き表示されます。
  2. 一時セッションを使用する: これにより、すべての権限アラートが表示されなくなります。注: これによりシングルサインオン (SSO) と共有Cookie は無効になります。
この手順はスキップして、権限アラートが表示されるデフォルトの動作を使用できます。これは後で設定できます。
8

アプリを起動する

Xcodeで ⌘+R を押します。
  1. “Log In”をタップ → 権限の確認 (デフォルトを使用している場合) → “Continue”をタップ
  2. ブラウザーでログインを完了します
  3. プロファイルが表示されます!
チェックポイントこれで、iOS または macOS アプリで Auth0 ログインが完全に機能するようになりました。

トラブルシューティングと高度な設定

カスタムドメイン を使用している場合は、すべての箇所で Auth0ドメインの代わりにその値を使用してください。例: tenant.auth0.com ではなく login.example.com を使用これは、特定の機能を正しく動作させるために必須です:
  • Auth0.plist をカスタムドメインの値で更新する
  • コールバック URL/logout URL にカスタムドメインを使用する
  • Universal Links では次を使用: webcredentials:login.example.com

App Store 公開準備

  • 権限アラートをなくすために Universal Links を設定する
  • 複数のプラットフォームバージョンとデバイスサイズでテストする
  • ネットワーク障害に対する適切なエラーハンドリングを実装する
  • biometrics とともに Keychain を使用する場合は Privacy Usage の説明を追加する
  • 認証フローについて App Store Review Guidelines に従う

セキュリティのベストプラクティス

  • 本番環境では機密性の高い認証データを絶対にログに出力しない
  • App Transport Security (ATS) への準拠を実装する
  • すべてのネットワークリクエストに HTTPS を使用する
  • Auth0 API 証明書をピン留めしてはいけません - Auth0 はこの方法を推奨していません

パフォーマンス最適化

  • すべての非同期処理で、UI 更新に @MainActor を適切に使用する
  • @Published プロパティで適切なメモリ管理を行う
  • オフラインアクセスのために、資格情報は Keychain に安全にキャッシュされる
  • ユーザープロファイルは ID トークン から取得される (追加のネットワークリクエストは不要)

biometrics による Keychain セキュリティの強化

保存された資格情報にアクセスする際に、Face ID または Touch ID による認証を必須にします。
有効にすると、SDK が保存済みの資格情報を取得する前に、ユーザーは biometrics を行う必要があります。

トークンの自動更新

CredentialsManager は、有効期限が切れたアクセストークンを自動的に更新します。
アクセストークンが必要な API 呼び出しを行う場合は、このパターンを使用してください。

App Extensions 間での資格情報の共有

アクセストークンを必要とするウィジェット、App Extension、バックグラウンドタスク向け:
要件:
  1. すべてのターゲットで Xcode の App Groups 機能を有効にする
  2. ターゲット間で同じ App Group 識別子を使用する
  3. 各ターゲットで共有の CredentialsManager を設定する

認証フローオプションの比較

推奨事項:
  • SSO を使用する本番アプリ: Universal Links (より優れた UX、SSO 対応、Apple Developer Account が必要)
  • SSO を使用しない本番アプリ: Ephemeral Session (アラートなし、セットアップが簡単)
  • テスト/開発: Ephemeral Session (すばやく設定でき、最もすっきりした UX)
  • クイックスタート/プロトタイピング: アラート付きのデフォルト (設定不要、後から移行可能)