はじめに
新しいプロジェクトを作成
このクイックスタート用に新しい 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 をクリックします
Auth0 SDK を追加する
Auth0 ソフトウェア開発キット (SDK) を、好みのパッケージマネージャーを使ってプロジェクトに追加します。
- Swift Package Manager
- CocoaPods
- Carthage
Xcode で:
- File → Add Package Dependencies…(または ⌘+Shift+K)
- Auth0 SDK の URL を入力します:
- Add Package → アプリのターゲットを選択 → Add Package
Auth0 を設定する
新しい Auth0 アプリケーションを作成して、コールバックURLを設定します。
- Auth0 Dashboard にアクセスします
- Applications > Create Application に進み、名前を入力して Native を選択し、Create をクリックします
- Settings タブで、Client ID と Domain を確認しておきます
- 次のURLを Allowed Callback URLs に追加します:
- iOS
- macOS
- 次のURLを Allowed Logout URLs に追加します:
- iOS
- macOS
- Save Changes をクリックします
アプリケーションクレデンシャルの設定
プロジェクトディレクトリに
Auth0.plist ファイルを作成します。Auth0.plist
Auth0.plist を Xcode にドラッグし、「Add to target」にチェックが付いていることを確認してください。認証サービスの作成
AuthenticationService.swift を作成します。- プロジェクトを右クリックし、New File… → Swift File を選択します
- ファイル名を
AuthenticationServiceにします - 内容を次のコードに置き換えます:
AuthenticationService.swift
認証フローの設定(任意)
ユーザーエクスペリエンスを向上させるために、次の方法でシステムアラートを最小限に抑えることができます。
- ユニバーサルリンクを使用する: リダイレクト中に表示される「“AppName” で開きますか?」というプロンプトをなくします。注: ASWebAuthenticationSession の許可アラートは引き続き表示されます。
- エフェメラルセッションを使用する: すべての許可アラートをなくします。注: Single Sign-On (SSO) と共有 Cookie が無効になります。
- ユニバーサルリンク
- エフェメラルセッション
- Auth0 Dashboard → Applications → 対象のアプリ → Settings → Advanced Settings → Device Settings
- Apple Team ID と bundle identifier を追加 → Save
- Xcode: Target → Signing & Capabilities → + Capability → Associated Domains
webcredentials:{yourDomain}を追加
チェックポイントこれで、iOS または macOS アプリに Auth0 によるログイン機能が完全に実装されました。
トラブルシューティングと詳細設定
一般的な問題と解決策
一般的な問題と解決策
ビルドエラー: ‘Auth0’ モジュールが見つかりません
- 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 のドメインではなく、自身のカスタムドメインを使用していることを確認する
毎回パーミッションアラートが表示される
カスタムドメインの設定
カスタムドメインの設定
カスタムドメイン を使用している場合は、Auth0 のドメインの代わりに、その値をすべての箇所で使用してください。例:
tenant.auth0.com の代わりに login.example.com を使用するこれは、特定の機能を正しく動作させるには 必須 です:Auth0.plistをカスタムドメインで更新する- コールバック URL / ログアウト URL にカスタムドメインを使用する
- ユニバーサルリンクでは
webcredentials:login.example.comを使用する
本番環境へのデプロイ
本番環境へのデプロイ
App Store への準備
- パーミッションアラートをなくすためにユニバーサルリンクを設定する
- 複数のプラットフォームバージョンおよびデバイスサイズでテストする
- ネットワーク障害に対する適切なエラー処理を実装する
- 生体認証付きで Keychain を使用する場合は、プライバシー使用目的の説明を追加する
- 認証フローに関して App Store Review ガイドラインに従う
セキュリティのベストプラクティス
- 本番環境では機密性の高い認証データをログに出力しない
- App Transport Security (ATS) に準拠する
- すべてのネットワークリクエストで HTTPS を使用する
- Auth0 の API 証明書を ピン留めしないでください - Auth0 はこの手法を推奨していません
パフォーマンス最適化
- すべての非同期処理で、UI 更新には
@MainActorを正しく使用する @Publishedプロパティで適切なメモリ管理を行う- 資格情報をオフラインアクセス用に Keychain に安全にキャッシュする
- ユーザーのプロファイルは IDトークンから取得し、追加のネットワークリクエストは発生させない
高度な統合
高度な統合