Skip to main content

AI を使って Auth0 を統合する

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

はじめる

1

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

このクイックスタート用に、新しい Android プロジェクトを作成します。Android Studio で:
  1. FileNewNew Project
  2. Phone and TabletEmpty Activity テンプレートを選択します
  3. プロジェクトを設定します。
    • Name: Auth0-Android-Sample
    • Package name: com.auth0.samples.android
    • Language: Kotlin
    • Minimum SDK: API 24 (Android 7.0)
    • Build configuration language: Kotlin DSL
  4. Finish をクリックします
これにより、現在の Android 開発のベストプラクティスに沿った、Kotlin と Gradle Kotlin DSL を使用するモダンな Android アプリが作成されます。
2

GradleでAuth0 SDKを追加

Gradle を使って、Auth0 Android SDK をプロジェクトに追加します。アプリレベルの build.gradle.kts ファイルを更新します。
app/build.gradle.kts
アプリレベルのbuild.gradle.ktsにmanifest placeholdersを追加します。
app/build.gradle.kts
AndroidManifest.xml にインターネット権限を追加する:
app/src/main/AndroidManifest.xml
Auth0 SDK は依存関係を自動的に解決し、安全なトークン保存機能を備えています。
3

Auth0 App を設定する

次に、Auth0 テナントで新しいアプリを作成し、その設定を Android プロジェクトに追加します。まず、app/src/main/res/values/strings.xml ファイルにプレースホルダーの値を用意します。
app/src/main/res/values/strings.xml
  1. Auth0 Dashboardに移動します
  2. アプリケーション > アプリケーション > アプリケーションを作成 をクリックします
  3. ポップアップでアプリ名を入力し、アプリの種類として Native を選択して Create をクリックします
  4. アプリケーションの詳細ページで 設定 タブに切り替えます
  5. strings.xml ファイル内の {yourDomain}YOUR_AUTH0_CLIENT_ID を、ダッシュボードの DomainClient ID の値に置き換えます
最後に、アプリケーションの詳細ページの 設定 タブで、以下の URL を設定します。Allowed Callback URLs:
許可されたログアウト URL:
{yourDomain} を実際の Auth0 ドメイン (例: dev-abc123.us.auth0.com) に置き換えてください。
Allowed Callback URLs は、認証後にユーザーを安全にアプリケーションへ戻すための重要なセキュリティ対策です。一致する URL がない場合、ログインプロセスは失敗し、ユーザーはアプリにアクセスできず、代わりに Auth0 のエラーページが表示されます。Allowed Logout URLs は、サインアウト時にシームレスなユーザー体験を提供するうえで不可欠です。一致する URL がない場合、ログアウト後にユーザーはアプリケーションへリダイレクトされず、代わりに汎用的な Auth0 ページに留まることになります。URL スキームには、コールバックが対象のアプリに確実にルーティングされるよう、パッケージ名 (com.auth0.samples.android) が含まれています。
重要: コールバック URL 内のパッケージ名が、build.gradle.kts 内の applicationId と一致していることを確認してください。認証が失敗する場合は、これらの値が同一であることを確認してください。
https スキーム (上記のとおりに設定) を使用する場合は、Android がコールバック URL をブラウザーで開くのではなく、直接アプリにルーティングするように、Android App Links を設定する必要があります。詳しくは、下記の Troubleshooting & Advanced にある Configure Android App Links セクションを参照してください。
4

Auth0 SDK の初期化

Auth0 と通信するため、Activity 内で Auth0 インスタンスを作成します。MainActivity.kt では次のようにします。
MainActivity.kt
Auth0 インスタンスは、先ほど設定した strings.xml ファイル内のクライアントIDと Domain を使って初期化されます。このインスタンスは、すべての認証処理で使用されます。
5

ログインとログアウトを実装する

ログインを実装: WebAuthProvider を使用して Universal Login ページを起動します。次のメソッドを MainActivity に追加します。
MainActivity.kt
Logout を実装: WebAuthProvider を使用してユーザーのセッションをクリアします。
MainActivity.kt
login() メソッドと logout() メソッドは、UI 上のそれぞれのボタンをユーザーがタップしたときに呼び出してください。このコードでは、コンテキスト引数として this (Activity を参照) を使用しています。これは、WebAuthProvider が Chrome Custom Tabs を起動し、認証フローを処理するために必要です。
6

アプリを実行する

Android アプリをビルドして実行します。Android Studio で:
想定されるフロー:
  1. アプリが起動し、「Log In」ボタンと盾のアイコンが表示される
  2. 「Log In」をタップ → Chrome Custom Tab が開く → ログインを完了
  3. 自動的にアプリに戻る
  4. 成功!!
Android では、複数のブラウザーがインストールされている場合、ブラウザーの選択ダイアログが表示されます。Auth0認証では、Chrome Custom Tabs が最適なユーザーエクスペリエンスを提供します。
チェックポイントこれで、Android デバイスまたはエミュレーターで、完全に機能する Auth0 login を利用できるようになっているはずです。このアプリは、安全な認証のために Chrome Custom Tabs を使用し、資格情報を自動的に保存します。

トラブルシューティングと詳細設定

Chrome Custom Tab からアプリにリダイレクトされない

解決策:
  1. Auth0 Dashboard の Allowed Callback URLsapplicationId と完全に一致していることを確認します
  2. build.gradle.kts の manifest placeholders が正しく設定されていることを確認します
  3. HTTPS とカスタムスキーム URL の両方が設定されていることを確認します
  4. クリーンして再ビルドします: BuildClean ProjectRebuild Project

アプリがクラッシュする: ‘Auth0 domain not found’

修正方法:
  1. com_auth0_domaincom_auth0_client_id の値が正しいことを確認します
  2. Domain の形式に誤りがないことを確認します (https:// は含めないでください)

dependencies に関連するビルドエラー

修正方法:
  1. build.gradle (プロジェクトレベル) の Android Gradle Plugin を最新バージョンに更新します
  2. プロジェクトを同期します: FileSync Project with Gradle Files
  3. ビルドをクリーンします: ./gradlew clean build

ユーザーによって認証がキャンセルされた

エラーコールバックで適切に処理します:

互換性のあるブラウザーがないというエラー

  • デバイスまたはエミュレーターに Chrome または別のモダンブラウザーをインストールします
  • より良いユーザー体験のために Chrome Custom Tabs を有効にします
  • Chrome がインストールされた実機でテストします
Android App Links を使用できない場合 (たとえば、対象の Android API バージョンが 23 未満の場合) は、代わりにカスタム URL スキームを設定できます。
カスタム URL スキームは、クライアントのなりすまし攻撃を受ける可能性があるため、App Links よりも安全性が低くなります。可能な限り App Links を使用してください。
  1. app/build.gradle.ktsauth0Scheme マニフェスト プレースホルダーを更新します。
app/build.gradle.kts
  1. Auth0 Dashboard のアプリケーション設定で、Allowed Callback URLsAllowed Logout URLs をカスタム スキームを使うように更新します。
  1. WebAuthProvider の呼び出し時にカスタム スキームを渡します。
MainActivity.kt
カスタム スキームに使用できるのは小文字のみです

App Store 公開の準備

  • シームレスな認証のために Android App Links を設定する
  • 複数の Android バージョンと画面サイズでテストする
  • ネットワーク障害に備えて適切なエラー処理を実装する
  • コード難読化を使用する場合は Auth0 SDK 用の ProGuard ルールを追加する
  • 認証フローに関する Google Play Store のポリシーに従う

セキュリティに関する考慮事項

  • 本番環境での資格情報の保存には SecureCredentialsManager を使用する
  • API のセキュリティ強化のために証明書ピンニングを実装する
  • 資格情報保護を強化するために Android Keystore の利用を検討する
  • 機密性の高い操作では生体認証を有効にする

強化された資格情報セキュリティ

資格情報へのアクセスに生体認証を実装します。
AuthenticationManager.kt

カスタム スコープと audience

API に対して特定のスコープと audience をリクエストします。
AuthenticationManager.kt

ネットワーク設定

ネットワーク セキュリティと証明書ピンニングに対応します。
app/src/main/res/xml/network_security_config.xml
AndroidManifest.xml に追加します。