AI を使って Auth0 を統合する
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 で:
- File → New → Project (または ⌘+Shift+N)
- 次のいずれかを選択します。
- iOS タブ → App テンプレート
- macOS タブ → App テンプレート
- プロジェクトを設定します。
- Product Name:
Auth0-Sample - Interface: SwiftUI
- Language: Swift
- Use Core Data: オフ
- Include Tests: オン (推奨)
- Product Name:
- 保存場所を選択し、Create をクリックします
2
Auth0 SDK を追加
お好みの package manager を使って、プロジェクトに Auth0 SDK を追加します。
- Swift Package Manager
- CocoaPods
- Carthage
Xcode の場合:
- File → Add Package Dependencies… (または ⌘+Shift+K)
- Auth0 SDK の URL を入力します。
- Add Package → アプリのターゲットを選択 → Add Package
3
Auth0 の設定
新しいAuth0アプリケーションを作成し、コールバックURLを設定します。
- Auth0 Dashboard を開きます
- アプリケーション > Create Application > 名前を入力し、Native を選択 > Create
- 設定 タブで、Client ID と Domain を控えておきます
- 次のURLを Allowed Callback URLs に追加します:
- iOS
- macOS
- 次のURLを Allowed Logout URLs に追加します:
- iOS
- macOS
- Save Changes をクリックします
4
アプリの資格情報を設定
プロジェクトのディレクトリに
Auth0.plistを作成します:Auth0.plist
Auth0.plistをXcodeにドラッグし、“Add to target”にチェックが入っていることを確認します。5
認証サービスを作成する
ログイン、ログアウト、トークンの保存を処理する
AuthenticationService.swift を作成します。トークンの保存には
CredentialsManager を使用します。 CredentialsManager クラスは資格情報を Keychain に安全に保存し、期限切れのアクセストークンを自動的に更新します。必ずこれを使用し、トークンをメモリ、UserDefaults、または localStorage に保存しないでください。- プロジェクトを右クリック → New File… → Swift File
- 名前を
AuthenticationServiceにします - 内容を次のように置き換えます:
AuthenticationService.swift
6
認証フローを設定する(任意)
ユーザー体験を向上させるには、次の方法でシステムアラートを最小限に抑えられます。
- Universal Links を使用する: リダイレクト中に表示される「“AppName”で開きますか?」という確認が出なくなります。注: ASWebAuthenticationSession の権限アラートは引き続き表示されます。
- 一時セッションを使用する: これにより、すべての権限アラートが表示されなくなります。注: これによりシングルサインオン (SSO) と共有Cookie は無効になります。
- Universal Links
- 一時セッション
- Auth0 Dashboard → アプリケーション → アプリ → 設定 → Advanced Settings → Device Settings
- Apple Team ID と bundle identifier を追加 → 保存
- Xcode: Target → Signing & Capabilities → + Capability → Associated Domains
- 追加:
webcredentials:{yourDomain}
8
アプリを起動する
Xcodeで ⌘+R を押します。
- “Log In”をタップ → 権限の確認 (デフォルトを使用している場合) → “Continue”をタップ
- ブラウザーでログインを完了します
- プロファイルが表示されます!
チェックポイントこれで、iOS または macOS アプリで Auth0 ログインが完全に機能するようになりました。
トラブルシューティングと高度な設定
よくある問題と解決策
よくある問題と解決策
ビルドエラー: ‘Auth0’ module not found
解決策:- Swift Package Manager: Package Dependencies を確認し、
Auth0.swiftが一覧に含まれていることを確認 - CocoaPods:
.xcodeprojではなく.xcworkspaceファイルを開いていることを確認 - Carthage:
Auth0.xcframeworkが Frameworks, Libraries, and Embedded Content に追加されていることを確認 - クリーンして再ビルド: ⌘+Shift+K の後に ⌘+R
- 必要に応じて Xcode を再起動
アプリがクラッシュする: ‘Auth0.plist not found’
修正方法:Auth0.plistが Xcode のプロジェクトナビゲータ内にあることを確認- ファイルを選択 → Inspector → アプリのターゲットにチェックが入っていることを確認
ClientIdキーとDomainキーに正しい値が設定されていることを確認
ブラウザは開くがアプリに戻らない
修正方法:- Auth0 Dashboard のコールバック URL が、バンドル識別子およびプラットフォームと完全に一致していることを確認
- iOS の場合は URL に
/ios/、macOS の場合は/macos/を含める - Xcode のバンドル識別子が Auth0 の設定と一致していることを確認
- URL にタイプミスがないことを確認 (よくある例: コロンの不足、ドメイン形式の誤り)
- カスタムドメインを使用している場合: Auth0ドメインではなく、カスタムドメインを使用していることを確認
毎回権限アラートが表示される
これは、カスタム URL スキームを使用する際の iOS/macOS の標準的なセキュリティ動作です。Universal Links または Ephemeral Sessions を使ってこのアラートを表示しないようにする方法については、Step 6 を参照してください。カスタムドメインの設定
カスタムドメインの設定
カスタムドメイン を使用している場合は、すべての箇所で 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 による認証を必須にします。トークンの自動更新
CredentialsManager は、有効期限が切れたアクセストークンを自動的に更新します。App Extensions 間での資格情報の共有
アクセストークンを必要とするウィジェット、App Extension、バックグラウンドタスク向け:- すべてのターゲットで Xcode の App Groups 機能を有効にする
- ターゲット間で同じ App Group 識別子を使用する
- 各ターゲットで共有の
CredentialsManagerを設定する
認証フローオプションの比較
推奨事項:
- SSO を使用する本番アプリ: Universal Links (より優れた UX、SSO 対応、Apple Developer Account が必要)
- SSO を使用しない本番アプリ: Ephemeral Session (アラートなし、セットアップが簡単)
- テスト/開発: Ephemeral Session (すばやく設定でき、最もすっきりした UX)
- クイックスタート/プロトタイピング: アラート付きのデフォルト (設定不要、後から移行可能)