mcpField
A
auth0-android

auth0-android

github.com/auth0セキュリティ55482 回インストール1 日前に更新
リポジトリ

auth0-android について

Auth0 Android SDKを使い、KotlinおよびJavaのAndroidアプリに認証を組み込むためのスキルです。ログイン、ログアウト、資格情報管理に加え、生体認証、パスワードレス認証、MFAの実装を扱います。

主な機能

  1. 01Auth0 Android SDKの設定
  2. 02ブラウザ経由のログインとログアウト
  3. 03資格情報の安全な保存と取得
  4. 04生体認証の追加
  5. 05パスワードレス認証とMFAの統合

活用シーン

  1. 01AndroidアプリへのAuth0ログイン追加
  2. 02ログイントークンの安全な保存
  3. 03生体認証の有効化
  4. 04パスワードレス認証やMFAへの対応

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/auth0/agent-skills --skill auth0-android

インストール後、Claude Code で/auth0-androidを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
api.md
integration.md
setup.md
tests/
evals.json
graders.json
prompt.md

詳細

Auth0 Android Integration

com.auth0.android:auth0 を使用して Android アプリケーションに認証を追加します。

エージェントへの指示: SDK のセットアップ手順を案内する前に、次のコマンドを実行して最新のリリースバージョンを取得してください。

gh api repos/auth0/Auth0.Android/releases/latest --jq '.tag_name'

ハードコードされたバージョンではなく、取得したバージョンをすべての implementation 依存関係の行で使用してください。コマンドが失敗した場合は、https://github.com/auth0/Auth0.Android/releases を確認してください。

前提条件

  • Android API 21 以上
  • Kotlin または Java のプロジェクト
  • Native アプリケーションを設定済みの Auth0 アカウント
  • Auth0 をまだ設定していない場合は、auth0-quickstart を参照してください

使用しないケース

  • React Native アプリ: auth0-react-native を使用してください
  • Flutter アプリ:ネイティブの Flutter Auth0 SDK を使用してください
  • Web SPA(React、Angular、Vue): auth0-react、auth0-angular、または auth0-vue を使用してください
  • Node.js/Express サーバー: auth0-express を使用してください
  • iOS/macOS アプリ: auth0-swift を使用してください

クイックスタートのワークフロー

  1. SDK をインストールする:build.gradle に Auth0 Android SDK の依存関係を追加します。

    implementation 'com.auth0.android:auth0:{LATEST_VERSION}'
    
  2. Auth0 を設定する:

    エージェントへの指示: ユーザープロンプトに Auth0 の Client ID と Domain の両方がすでに含まれているか確認してください。

    • 両方が指定されている場合は、その値を使ってセットアップガイドの手動セットアップに直接進みます。
    • どちらかが指定されていない場合は、コードやファイルを書く前に、必ずユーザーに確認してください。
      • 質問:「このプロジェクトで Auth0 をどのように設定しますか?」
      • 選択肢:「自動セットアップ(推奨)— Auth0 CLI がアプリを作成し、認証情報を strings.xml に書き込みます」/「手動セットアップ — Client ID と Domain を指定します」

    次に、選択された方法に従ってセットアップガイドを参照してください。 Auth0 の認証情報が確認されるまで、手順 3 に進まないでください。

    注: ネイティブ Android アプリでは、Domain と Client ID は公開設定情報であり、秘密情報ではありません。クライアントシークレットは使用しません。値は会話の出力に表示せず、strings.xml に直接書き込んでください。

  3. 初期化する:Auth0 アカウントのインスタンスを作成します。

    import com.auth0.android.Auth0
    
    val account = Auth0.getInstance(context)
    

    重要: Auth0.getInstance(context) は strings.xml から com_auth0_client_id と com_auth0_domain を自動的に読み込みます。clientId や domain を引数として渡すこと(例:Auth0.getInstance(clientId, domain))は絶対にしないでください。認証情報がソースにハードコードされてしまいます。

  4. 認証 UI を追加する:Web Auth を使ってログインとログアウトを実装します。

    エージェントへの指示: 新しい UI 要素を追加する前に、プロジェクト内でログイン、ログアウト、サインイン、サインアウトボタンの既存のクリックハンドラー(例:loginButton、signInButton、logoutButton、signOutButton、または認証関連の名前が付いた setOnClickListener)を検索してください。既存のハンドラーが見つかった場合は、既存の UI を変更せず、そこに Auth0 のコードを組み込んでください。新しいボタンを作成するのは、既存のハンドラーが見つからない場合に限ります。

    ログイン:

    import com.auth0.android.Auth0
    import com.auth0.android.authentication.AuthenticationAPIClient
    import com.auth0.android.authentication.storage.SecureCredentialsManager
    import com.auth0.android.authentication.storage.SharedPreferencesStorage
    import com.auth0.android.callback.Callback
    import com.auth0.android.authentication.AuthenticationException
    import com.auth0.android.provider.WebAuthProvider
    import com.auth0.android.result.Credentials
    
    val account = Auth0.getInstance(context)
    val authentication = AuthenticationAPIClient(account)
    val storage = SharedPreferencesStorage(context)
    val credentialsManager = SecureCredentialsManager(context, authentication, storage)
    
    WebAuthProvider.login(account)
        .withScheme(getString(R.string.com_auth0_scheme))
        .withScope("openid profile email offline_access")
        .start(this, object : Callback<Credentials, AuthenticationException> {
            override fun onSuccess(result: Credentials) {
                // User authenticated
                val idToken = result.idToken
                val accessToken = result.accessToken
                // Store credentials securely
                credentialsManager.saveCredentials(result)
            }
            override fun onFailure(error: AuthenticationException) {
                // Handle authentication failure
                Log.e("Auth0", "Authentication failed", error)
            }
        })
    

    ログアウト:

    WebAuthProvider.logout(account)
        .withScheme(getString(R.string.com_auth0_scheme))
        .start(this, object : Callback<Void?, AuthenticationException> {
            override fun onSuccess(result: Void) {
                // User logged out
            }
            override fun onFailure(error: AuthenticationException) {
                Log.e("Auth0", "Logout failed", error)
            }
        })
    
  5. ビルドして検証する:

    エージェントへの指示: 統合が完了したら、プロジェクトをビルドして正常にコンパイルできることを確認してください。

    ./gradlew assembleDebug
    

    ビルドに失敗した場合は、エラー出力を分析して問題を修正してください。統合時によくあるビルドエラーは次のとおりです。

    • 参照が未解決: import 文が不足しています。必要な import com.auth0.android.* の import を追加してください。
    • シンボル R.string.com_auth0_scheme を解決できない: strings.xml が更新されていません。com_auth0_scheme、com_auth0_client_id、com_auth0_domain の各エントリーが存在することを確認してください。
    • コールバックの型が一致しない: コールバックの型パラメーターが一致していません。ログインには Callback<Credentials, AuthenticationException>、ログアウトには Callback<Void?, AuthenticationException> を使用してください。
    • lifecycleScope が未解決: 依存関係が不足しています。implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.+' を追加するか、コルーチンスコープの外にコードを移動してください。
    • minSdk が低すぎる: SDK には API 21 以降が必要です。minSdkVersion を 21 以上に更新してください。
    • Java バージョンの不一致: SDK には Java 8 が必要です。JavaVersion.VERSION_1_8 を指定した compileOptions を追加してください。

    修正するたびにビルドを再実行してください。ビルド修正の反復回数を記録してください。

    失敗時の確認: 5~6 回修正を試みてもビルドに失敗する場合は、作業を停止してユーザーに確認してください。

    • 質問:「何度か修正を試みましたが、ビルドはまだ失敗しています。どのように進めますか?」
    • 選択肢:「エージェントに引き続き反復して修正させる」/「手動で修正します。エラーを表示してください」/「ビルド検証をスキップして続行する」

    エラーが続く場合は、5~6 回反復するごとにこの確認を繰り返してください。ユーザーの明示的な同意なしに、プロジェクトをコンパイルできない状態のままにしないでください。

    コールバック URL は、Auth0 アプリケーションの設定と一致している必要があります:{SCHEME}://{YOUR_AUTH0_DOMAIN}/android/{YOUR_APP_PACKAGE_NAME}/callback

詳細なドキュメント

  • セットアップガイド — SDK のインストール、Auth0 アプリケーションの設定、コールバック URL のセットアップ、Android App Links、カスタムスキーム、ProGuard/R8
  • 統合パターン — Web Auth のログイン/ログアウト、認証情報の保存、生体認証、データベースログイン、パスワードレス認証、MFA の処理、カスタムタブ、エラー処理
  • テストとリファレンス — テストチェックリスト、よくある問題、セキュリティに関する考慮事項、API リファレンス

よくある間違い

間違い修正方法
Auth0 Dashboard でアプリの種類が Native に設定されていないAuth0 テナントで Native アプリケーションの種類を作成します。Android SDK には Native アプリの設定が必要です。Machine-to-Machine やその他の種類では使用できません。
Allowed Callback URLs にコールバック URL がない{SCHEME}://{YOUR_AUTH0_DOMAIN}/android/{YOUR_APP_PACKAGE_NAME}/callback を Auth0 アプリケーションの Allowed Callback URLs 設定に追加します。ここで {SCHEME} は strings.xml の com_auth0_scheme と一致させます(デフォルトは demo です)。
<uses-permission android:name="android.permission.INTERNET" /> がないAndroidManifest.xml に INTERNET 権限を追加します。認証には SDK のネットワークアクセスが必要です。
カスタムスキームが小文字でないAndroid ではスキーム名を小文字にする必要があります。https(推奨)または myapp://callback のような小文字のカスタムスキームを使用します。
直接認証を呼び出す際に .validateClaims() を忘れるAuthenticationAPIClient を直接使用する場合(データベース、パスワードレス、API ログイン)は、必ず .validateClaims() を呼び出します。Web Auth では自動的に検証されます。
暗号化せずに SharedPreferences にトークンを保存するSecureCredentialsManager を使って認証情報を保存します。トークンを手動で平文のまま保存しないでください。マネージャーは保存中のトークンを暗号化します。
マニフェストプレースホルダーがないbuild.gradle の defaultConfig ブロックに manifestPlaceholders = [auth0Domain: "@string/com_auth0_domain", auth0Scheme: "@string/com_auth0_scheme"] を追加します。

関連スキル

  • auth0-quickstart — Auth0 アカウントとアプリケーションをセットアップする
  • auth0-mfa — 多要素認証を設定する
  • auth0-swift — iOS/macOS 認証
  • auth0-cli — ターミナルから Auth0 リソースを管理する

クイックリファレンス

主要クラス
クラス用途
Auth0SDK のエントリーポイント。アプリの認証情報を保持します
WebAuthProviderブラウザー経由の OAuth 2.0 ログイン/ログアウト
AuthenticationAPIClient直接 API を呼び出します(データベースログイン、パスワードレス、MFA)
SecureCredentialsManager認証情報を安全に保存、取得します
Credentialsユーザートークンと有効期限
よくあるユースケース

参考資料

コメント