メインコンテンツへスキップ

Googleのソーシャル接続やエンタープライズ接続を使用する

アプリケーションにGoogleのソーシャル接続が既にある場合、同じドメインに対して新しいGoogle Workspace接続を作成すると、ソーシャル接続のユーザーが新しいエンタープライズ接続でログインできるようになります。これは、Google Workspaceのエンタープライズ接続が有効に設定されているかに左右されません。

前提条件

開始する前に:

ステップ

アプリケーションをGoogle Workspaceに接続するには、以下を行う必要があります:
  1. Googleでアプリを設定する
  2. Auth0でエンタープライズ接続を作成する
  3. Auth0アプリケーションでエンタープライズ接続を有効にする
  4. 接続のテスト

Google Workspaceアカウント

事前に、有効なGoogle Workspaceアカウントと、管理者として 独自に所有 しているGoogle Workspaceの組織部門が必要です。

Googleでアプリを設定する

Google Workspaceを使用してユーザーがログインできるようにするには、Google開発者コンソールでアプリケーションを登録する必要があります。
事前に、自身が管理者となっている 独自の Google Workspaceの組織部門が設定されている必要があります。

新規アプリケーションを登録する

Googleに新規アプリケーションを登録する方法については、GoogleのOAuth 2.0の設定に関する文書をご覧ください。このプロセスでGoogleは、ご利用のアプリケーション用の クライアントIDクライアントシークレット を作成しますので、それをメモしておきます。 アプリの設定時、これらの設定を必ず使用してください:
  • 同意画面 で、** [Authorized domains(承認されたドメイン)]** の下に、auth0.comを追加します。
  • アプリケーションの種類を選択するよう指示された場合は、 [Webアプリケーション] を選び、以下のパラメーターを設定します:
    フィールド説明
    Name(名前)アプリケーションの名前。
    Authorized JavaScript origins(認可されたJavaScriptオリジン)https://{yourDomain}
    Authorized redirect URIs(認可されたリダイレクトURI)https://{yourDomain}/login/callback

    リダイレクト用のAuth0ドメイン名を見つける

    上記で、 カスタムドメイン機能を使っていないのにAuth0ドメイン名が表示されない場合は、ドメイン名がテナント名、地域のサブドメイン、および「auth0.com」をドット記号(「.」)で区切って連結したものだからです。たとえば、テナント名が「exampleco-enterprises」でテナントがUS地域にある場合、Auth0ドメイン名は「exampleco-enterprises.us.auth0.com」、Redirect URI(リダイレクトURI) は「https://exampleco-enterprises.us.auth0.com/login/callback」になります。ただし、テナントがUS地域にあり、2020年6月よりも前に作成された場合、Auth0ドメイン名は「exampleco-enterprises.auth0.com 」、Redirect URI(リダイレクトURI) は「https://exampleco-enterprises.auth0.com/login/callback」になります。カスタムドメインを使っている場合、Redirect URI(リダイレクトURI) は「https://<YOUR CUSTOM DOMAIN>/login/callback」になります。
アプリケーションが機密性の高いOAuthスコープを要求した場合は、Googleによる審査の対象となります。

Admin SDK Serviceを有効化する

Google Workspaceのエンタープライズドメインに接続する予定であれば、 Admin SDK Service を有効にする必要があります。方法については、GoogleのAPIの有効化と無効化に関する文書をご覧ください。

Auth0でエンタープライズ接続を作成する

Google Enterprise接続では、Auth0ユーザープロファイルに最大200個のグループを含めることができます。ユーザープロファイルにあるグループ数が200を超えている場合には、これらの結果が表示されないことがあります。Google Workspaceでは、グループ名の一意性は強要されません。認可にGoogleグループを使用している場合、[Groups(グループ)]>[Extended Groups Attribute Format(拡張グループ属性形式)] オプションを選択し、名前の代わりにグループの一意の識別子に対して、グループメンバーシップの一意のIDとメールアドレスを確認します。グループの拡張プロパティについては、以下に記載の「GoogleからのIDプロバイダートークンを使用する」セクションを参照してください。認可にGoogleグループを使用する場合は、権限のないユーザーがグループを変更できないようにワークスペースを保護する必要があります。
次に、Auth0でGoogle Workspaceのエンタープライズ接続を作成・構成する必要があります。Google開発者コンソールでご利用のを設定した際に作成された クライアントIDクライアントシークレット があることを確認してください。
  1. [Auth0 Dashboard]>[Authentication(認証)]>[Enterprise(エンタープライズ)]に移動し、Google Workspace の[+]記号をクリックします。
    Dashboard - 接続 -エンタープライズ
  2. 接続の詳細を入力し、 [Create(作成)] をクリックします。
    フィールド説明
    Connection name(接続名)接続の論理識別子。テナントに対して一意である必要があります。一度設定すると、この名前は変更できません。
    Google Workspace Domain(Google Workspaceドメイン)組織のGoogle Workspaceドメイン名。
    Client ID(クライアントID)登録済みのGoogleアプリケーションの一意の識別子。Google開発者コンソールで登録したアプリの Client ID(クライアントID) の保存値を入力します。
    Client Secret(クライアントシークレット)登録済みのGoogleアプリケーションへのアクセスに使用する文字列。Google開発者コンソールで登録したアプリの Client Secret(クライアントシークレット) の保存値を入力します。
    Attributes(属性)アプリがアクセスできるサインイン済みユーザーの基本属性。Auth0ユーザープロファイルにどの程度情報を保管したいかを示します。オプションには、Basic Profile(基本プロファイル)emailemail verifiedフラグ)とExtended Profile(拡張プロファイル)(名前、公開プロファイルURL、写真、性別、生年月日、国、言語、タイムゾーン)があります。
    Extended Attributes(拡張属性)(任意)アプリがアクセスできるログイン済みユーザーの拡張属性。オプションには、Groups(グループ)(ユーザーが属する配布リスト。グループ名、グループのメールアドレス、一意のグループIDを取得する拡張グループ属性形式オプションを含む)、Is Domain Administrator(ドメイン管理者か)(ユーザーがドメイン管理者であるかどうかを示す)、Is Account Suspended(アカウントが一時停止されているか)(ユーザーのアカウントが停止されているかどうかを示す)、Agreed to Terms(利用規約に同意済み)(ユーザーが利用規約に同意したかどうかを示す)があります。
    Auth0 APIs(Auth0 API)(任意)Enable Users API(ユーザーAPIを有効にする) が選択されている場合は、Google Directory APIを呼び出す機能が必要であることを示します。
    Auth0 User ID(Auth0ユーザーID)(任意)デフォルトでは、Auth0のuser_idemailにマッピングされます。Use ID instead of Email for Auth0 User ID(Auth0ユーザーIDにメールの代わりにIDを使用する) を有効にすると、user_ididにマッピングされます。これは新しい接続に対してのみ設定でき、構成後は変更できません。
    Sync user profile attributes at each login(ログインの度にユーザープロファイル属性を同期する)有効にすると、Auth0はユーザープロファイルデータを各ユーザーログインと自動的に同期し、接続ソースで行われた変更がAuth0で自動的に更新されるようにします。
    Google Workspace接続を作成する
  3. Google Workspaceを設定するための適切な管理者権限をお持ちの場合は、GoogleのAdmin APIを使って [Continue(続行)] をクリックします。管理者権限を持っていない場合には、提示されたURLを管理者に提供して必要な設定を調整してもらってください。
  4. [Login Experience(ログインエクスペリエンス)] タブでこの接続でのユーザーログインの方法を設定できます。
フィールド説明
ホームレルムディスカバリーユーザーのメールドメインを、指定されたIDプロバイダードメインと比較します。詳細については、[識別子優先認証の構成]を参照してください。(https://auth0.com/docs/ja-jp/authenticate/login/auth0-universal-login/identifier-first)
接続ボタンを表示このオプションでは、アプリケーションの接続ボタンをカスタマイズするため次の選択肢が表示されます。
Button display name(ボタン表示名) (オプション)ユニバーサルログインのログインボタンをカスタマイズするために使用されるテキスト。設定されるとボタンは以下を読み取ります:“Continue with {Button display name}
Button logo(ボタンロゴ)URL (任意)ユニバーサルログインのログインボタンをカスタマイズするために使用される画像のURL。設定されると、ユニバーサルログインのログインボタンは、20px×20pxの四角で画像を表示します。
任意のフィールドは、New Universal Loginでのみ使用することができます。Classic Loginを使用している場合、[Add(追加)]ボタン、ボタンの表示名、ボタンロゴのURLは表示されません。

接続を使用する

Auth0アプリケーションでエンタープライズ接続を有効化する

新たなAD接続を使うにはまずAuth0アプリケーションの接続を有効にする必要があります。

接続をテストする

これで接続をテストする準備が整いました。

Googleにリフレッシュトークンを要求する

Googleは常に、ユーザープロファイルに保存されているアクセストークンを返します。access_type=offline&approval_prompt=forceを認証要求に追加すると、Auth0はこれらのパラメーターをGoogleに転送します。その後Googleはやはりユーザープロファイルに保存されているリフレッシュトークンを返します。

GoogleからのIDプロバイダートークンの使用

Auth0がデフォルトで取得するユーザーやグループ詳細以外に追加で取得した場合は、Googleから返されたアクセストークンを使ってGoogleのAPIを呼び出せます。これらのトークンにセキュアにアクセスするには、IDプロバイダーのアクセストークンに示すガイドラインに従ってください。 Google Workspaceの場合、Auth0は個別ユーザーオブジェクトとワークスペース管理者の接続オブジェクト上にアクセストークンとリフレッシュトークンを保存します。 GoogleのDirectory Admin APIでユーザーの拡張されたグループプロパティを取得するには、Auth0 DashboardでGoolgle Workspace接続まで移動し、 [Groups(グループ)] の拡張属性を有効にします。次に [Setup(設定)] タブを使って管理者の合意を完了します。 これらのステップを完了後、Auth0 Get a connection(接続取得)エンドポイントを使って接続オブジェクトの管理者アクセストークンを取得します。その後、 このトークンを使ってGoogleのManage Groupsエンドポイントを呼び出すことができます。 呼び出し例
curl -H "Authorization: OAuth {admin_access_token}" https://admin.googleapis.com/admin/directory/v1/groups\?userKey={user_key}

Actionsで認証を検証する

ログイン後のActionsを使って、認証イベントがGoogle組織の一員である正規ユーザーからのものかどうかを検証できます。その結果、組織の一員でなくなったユーザーがアプリケーションに不正アクセスすることを防ぐことで、脆弱性の可能性を最小限に抑えることができます。 正規のGoogle認証であることを検証するには、ログイン後のActionsを使って、ユーザーに関連付けられたidp_tenant_domainクレームを検証し、その値がそのユーザーに対して予想される組織と合致するかどうか確認します。 idp_tenant_domainを検証できるのは、以下の接続タイプの認証を使うユーザーに限ります:
  • Googleソーシャル
  • Google Workspace
  • Google OIDC

以下に、idp_tenant_domainログイン後Actionsを使って検証する方法を示します。
exports.onExecutePostLogin = async (event, api) => {

 // Example to block social accounts
 if (event.connection.strategy === 'google-oauth2' 
 && !event.user.idp_tenant_domain) // Non-organization Accounts
 {
   api.access.deny('Account not allowed for login');
 }

 // Example to only permit allowlisted organization accounts
 if (event.connection.strategy === 'google-oauth2' 
 && event.user.idp_tenant_domain != "allowedOrganization.com") 
 {
   api.access.deny('Your Google Organization is not allowed to login');
 }

};

既存接続を再承認する

Google Workspace管理者が削除された場合、ログインの失敗を回避するには、その管理者が設定・認証したGoogle Workspaceエンタープライズ接続を新たなGoogle Workspace管理者が再承認する必要があります。そのためには、新たな管理者がGoogle Workspaceエンタープライズ接続の**[Setup(セットアップ)]** タブにあるリンクを使います。

次の手順

I