Skip to main content
Sign in with Google を使用すると、ユーザーは有効な Google アカウントで認証でき、アプリケーションでシームレスなログイン体験を提供できます。Auth0 と Android 向け Credential Manager を使って、この機能をネイティブ Android アプリケーションに実装できます。 以下のセクションでは、Sign in with Google の設定に必要な手順と方法について詳しく説明します。

仕組み

この機能は Android の Credential Manager を使用して、Auth0 で保護された Android アプリケーションでの Sign In with Google を容易にします。以下の手順は、Sign In with Google における一般的なユーザーのワークフローを示しています。
  1. ユーザーが Android アプリケーションを開き、Google でのログインを選択します。
  2. Android アプリケーションは Credential Manager を使用して、Sign In with Google をリクエストします。
  3. アカウント選択の画面で、ユーザーは使用する Google アカウントを選択します。
  4. Google はユーザーをローカルでサインインさせ、認証をすべて処理します。
  5. ユーザーは追加の操作を行うことなくサインインを完了します。
  6. Google は id_token を Android アプリケーションに返します。
  7. Android アプリケーションは、検証のために id_token を Auth0 テナントに送信します。Auth0 は、id_tokenclient_id が、テナントで設定された Google のソーシャル接続の client_id と一致することを検証します。
  8. Auth0 サーバーは access_token を Android アプリケーションに返します。

始める前に

Sign In with Google の設定を開始する前に、次の条件を満たしていることを確認してください。

Android アプリケーション向けの Sign In with Google の設定

Sign In with Google を実装するには、主に 3 つの手順があります。
  1. Google Cloud Console で資格情報を作成します。
  2. Auth0 でアプリケーションの詳細を設定します。
  3. Android アプリケーションのコードを更新します。
以下の各セクションでは、これらの手順それぞれの技術的な詳細を説明します。

Google Cloud Console で資格情報を作成する

まず、Google Cloud Console で次の項目を設定する必要があります。
  1. 種類を Android に設定した OAuth 2.0 資格情報を作成します。これを client_id_native と呼びます。
  2. 手順 1 の Android Client に、ネイティブ アプリケーションの SHA1 ハッシュを追加します。
    • 現在、Google がサポートしているのは SHA1 のみです。
  3. Web 用の OAuth クライアント (client_id_web) を追加で作成します。
    • 状況によっては、Web ベースの Sign in with Google をサポートする Social 接続用に、この項目がすでに設定済みの場合があります。
Google Credential Manager で Android の client_id を使用すると、エラーが発生するため使用できません。Google から返される ID トークンでは、authorized party (azp) は自動的に Android OAuth Client ID に設定され、audience (aud) は Web OAuth Client ID に設定されます。Android から Credentials Manager を呼び出す場合、ネイティブ アプリケーションでは Credentials Manager SDK の .setServerClientId を使用して client_id_web を指定する必要があります。client_id_web は Google Cloud Console の Web Application OAuth 2 Credential に対応しており、Google OAuth2 の Social 接続で設定されます。詳しくは、Google のドキュメントを参照してください。

Auth0 を設定する

Sign in with Google のフローでは、Auth0 と Android アプリケーションの間で行われるトークン交換を利用します。 Google Cloud Console で資格情報を作成したら、Android 向け Credential Manager を使用して Sign in with Google を有効にできます。これを行うには、またはのいずれかでアプリケーションを更新します。
Auth0 Dashboard からアプリケーションを更新するには、次の手順に従います。
  1. Applications > Applications に移動し、対象のネイティブ Android アプリケーションを選択します。
  2. Settings タブで、Advanced Settings セクションを展開します。
  3. Device Settings タブを選択し、Enable Sign in with Google (Android 4.4+) using Credentials Manager 設定を有効化します。
  4. 新しいアプリケーションの場合: Device Settings タブで、App Package Name を含む Android セクションの各項目を入力します。詳細については、Enable Android App Links Support を参照してください。
  5. Save Changes を選択します。

Androidアプリケーションのコードを更新する

次の例は、Microsoft、ユーザー名とパスワード、またはエンタープライズ フェデレーションなど、Google 以外の認証で使用される Web フローを補完するものです。
Google の googleCredential を取得するには、ネイティブアプリケーションのコードから Google ライブラリを呼び出す必要があります。詳しくは、Google の Credential Manager ドキュメントを参照してください。

追加の認証シナリオ

現在の Google 実装では、エンタープライズ フェデレーションや追加の (MFA) チャレンジに関する明確なガイダンスは提供されていませんが、Web エクスペリエンスに移行することで、これらの機能に対応できます。

エンタープライズ フェデレーション

Auth0 はエンタープライズ フェデレーションをサポートしており、外部のエンタープライズ アイデンティティプロバイダー (Okta Workforce、ADFS、その他の OIDC 互換システムなど) を Auth0 テナントに接続できます。これにより、ユーザーは既存の社内資格情報を使って認証できるようになります。 エンタープライズ フェデレーションを利用する必要がある場合は、前述の例のように id_token に依存するのではなく、ユーザーを Web ベースのフローにリダイレクトすることをおすすめします。 そのためには、Google の をデコードし、 に含まれる emaillogin_hint として渡します。これにより、エンドユーザーは Web フローでメールアドレスを再入力せずに済みます。

トークン交換時のMFAに関する考慮事項

Google OAuth 接続のポリシーで多要素認証が必要な場合、Auth0 はトークン交換中にアプリケーションへエラーを返します。 このエラーは、アプリケーションへのレスポンスに含まれます。 上記のエラーが発生した場合、アプリケーションは Google の id_token で利用可能な追加コンテキストを使って WebAuth を利用できます。このシナリオでは、エンドユーザーに表示されるのは MFA 画面のみです。