Google を B2B ゲスト ユーザーの ID プロバイダーとして追加する

ヒント

この記事では、B2B コラボレーションの ID プロバイダーとして Google を追加する方法について説明します。 テナントが顧客の ID およびアクセス管理用に構成されている場合は、顧客向けの「Google を ID プロバイダーとして追加する」を参照してください。

Google とのフェデレーションを設定することで、招待されたユーザーが Microsoft アカウントを作成することなく、独自の Gmail アカウントを使用して共有アプリおよびリソースにサインインできるようにできます。 アプリケーションのサインイン オプションの 1 つとして Google を追加すると、ユーザーは [サインイン] ページで、Google へのサインインに使用する Gmail アドレスを入力できます。

Sign in options for Google users

Note

Google フェデレーションは Gmail ユーザー専用に設計されています。 Google Workspace ドメインとのフェデレーションを行うには、SAML/WS-Fed ID プロバイダー フェデレーションを使用します。

重要

  • 2021 年 7 月 12 日以降、Microsoft Entra B2B のお客様がセルフサービス サインアップで使用するため、あるいはカスタム アプリケーションまたは基幹業務アプリケーションに外部ユーザーを招待するために、新しい Google 統合をセットアップした場合、Gmail ユーザーの認証がブロックされる可能性があります (「ウィザードの内容」に示すようなエラー画面が表示されます)。 この問題が発生するのは、2021 年 7 月 12日 以降にセルフサービス サインアップ ユーザー フローまたは招待のために Google 統合を作成し、カスタム アプリケーションまたは基幹業務アプリケーションの Gmail 認証がシステム Web ビューに移動されていない場合のみです。 システム Web ビューは既定で有効になっているため、ほとんどのアプリは影響を受けません。 この問題を回避するには、セルフサービス サインアップのために新しい Google 統合を作成する前に、Gmail 認証をシステム ブラウザーに移動することを強くお勧めします。 「埋め込み Web ビューに必要な対応」を参照してください。
  • 2021 年 9 月 30 日以降、Google では Web ビューのサインイン サポートが非推奨になります。 アプリで埋め込み Web ビューを使用してユーザーを認証していて、Google フェデレーションを Azure AD B2C、Microsoft Entra B2B (外部ユーザーの招待用)、またはセルフサービス サインアップで使用している場合、Google Gmail ユーザーが認証されなくなります。 詳細情報 を参照してください。

Google ユーザーのエクスペリエンスの内容

さまざまな方法で Google ユーザーを B2B コラボレーションに招待できます。 たとえば、Microsoft Entra 管理センターを使用してディレクトリに追加できます。 招待を引き換えたときのエクスペリエンスは、Google に既にサインインしているかどうかによって異なります。

  • Google にサインインしていないゲストユーザーには、そうするように求めるメッセージが表示されます。
  • Google に既にサインインしているゲスト ユーザーには、使用するアカウントの選択を求めるメッセージが表示されます。 招待に使用されたアカウントを選択する必要があります。

"ヘッダーが長すぎます" というエラーが表示されたゲスト ユーザーは、Cookie をクリアするか、プライベートまたは匿名のウィンドウを開いて、もう一度サインインを試すことができます。

Screenshot that shows the Google sign-in page.

サインインのエンドポイント

Google のゲスト ユーザーは、共通のエンドポイント (つまり、テナント コンテキストを含まない一般的なアプリ URL) を使って、マルチテナント アプリまたは Microsoft のファーストパーティ アプリにサインインできるようになりました。 サインイン プロセス中に、ゲスト ユーザーは [サインイン オプション] を選択してから、 [Sign in to an organization](組織にサインイン) を選択します。 次に、ユーザーは組織の名前を入力し、Google 資格情報を使用してサインインを続行します。

Google ゲスト ユーザーは、テナント情報を含むアプリケーション エンドポイントを使用することもできます。次に例を示します。

  • https://myapps.microsoft.com/?tenantid=<your tenant ID>
  • https://myapps.microsoft.com/<your verified domain>.onmicrosoft.com
  • https://portal.azure.com/<your tenant ID>

また、https://myapps.microsoft.com/signin/Twitter/<application ID?tenantId=<your tenant ID> のようにテナント情報を含めることによって、アプリケーションまたはリソースへの直接リンクを Google ゲスト ユーザーに提供することもできます。

Web ビュー サインイン サポートの廃止

2021 年の 9 月 30 日より、Google は埋め込み Web ビューのサインイン サポートを廃止します。 アプリで埋め込み Web ビューを使用してユーザーを認証していて、Google フェデレーションを Azure AD B2C、Microsoft Entra B2B (外部ユーザーの招待用)、またはセルフサービス サインアップで使用している場合、Google Gmail ユーザーが認証されなくなります。

Gmail ユーザーに影響を与える既知のシナリオを次に示します。

  • Windows 上の Microsoft アプリ (Teams や Power Apps など)
  • WebView コントロール、WebView2、または古い WebBrowser コントロールを認証で使用する Windows アプリ。 これらのアプリは、Web アカウント マネージャー (WAM) フローの使用へ移行する必要があります。
  • WebView UI 要素を使用した Android アプリケーション
  • UIWebView または WKWebview を使用した iOS アプリケーション
  • ADAL を使用したアプリ

この変更は以下のものには影響しません。

  • Web アプリ
  • web サイト経由でアクセスされる Microsoft 365 サービス (SharePoint オンライン、Office Web アプリ、Teams Web アプリなど)
  • 認証でシステム Web ビューを使用したモバイルアプリ (iOS の SFSafariViewController、Android のカスタム タブ)。
  • Google Workspace ID (たとえば、Google Workspace との SAML ベースのフェデレーションを使用している場合)
  • Web アカウント マネージャー (WAM) または Web 認証ブローカー (WAB) を使用する Windows アプリ。

埋め込み Web ビューに必要な対応

サインインにシステム ブラウザーを使用するようにアプリを変更します。 詳細については、MSAL.NET ドキュメントの「埋め込み Web ビューとシステム ブラウザー」を参照してください。 すべての MSAL SDK が既定でシステム ブラウザーを使います。

ウィザードの内容

Microsoft は、9 月 30 日より、埋め込み Web ビューを現在も使用しているアプリケーションの認証がブロックされないようにするための回避策となる、デバイスのサインイン フローをグローバルに展開します。

デバイスのサインイン フローでサインインする方法

デバイスのサインイン フローでは、Gmail アカウントを使用して埋め込み Web ビューからサインインを行ったユーザーに対して、サインインを完了する前に別のブラウザーでコードを入力するように求めるメッセージを表示します。 ユーザーが、ブラウザーにアクティブなセッションがない状態で初めて Gmail アカウントでサインインした場合、次のような一連の画面が表示されます。 既存の Gmail アカウントで既にサインインしている場合は、これらの手順の一部が省略される可能性があります。

  1. [サインイン] 画面で、ユーザーが自身の Gmail のアドレスを入力し、 [次へ] を選択します。

    Screenshot showing the sign-in screen

  2. ユーザーに、新しいウィンドウを開いて https://microsoft.com/devicelogin に移動し、表示された 9 桁の英数字を入力するよう求める、次のような画面が表示されます。

    Screenshot showing the 9-digit code

  3. ユーザーがコードを入力できる、デバイスのサインイン ページが開きます。

    Screenshot showing the device sign-in page

  4. コードが一致する場合、セキュリティ上の理由から、ユーザーはアプリとサインインの場所を確認するためにメール アドレスの再入力を求められます。

    Screenshot showing the screen for reentering email

  5. ユーザーは、自身のメールアドレスとパスワードを使用して Google にサインインします。

    Screenshot showing the Google sign-in screen

  6. ここでも、サインインしようとしているアプリを確認するように求められます。

    Screenshot showing application confirmation screen

  7. ユーザーが [続行] を選択します。 サインインが完了したことを確認するメッセージが表示されます。 ユーザーがタブまたはウィンドウを閉じると、アプリにサインインした最初の画面に戻ります。

    Screenshot showing sign-in confirmation

または、既存の Gmail ユーザーと新しい Gmail ユーザーに、電子メールのワンタイム パスコードを使用してサインインさせることもできます。 Gmail ユーザーが電子メールのワンタイム パスコードを使用するようにするには、次のようにします。

  1. メールのワンタイム パスコードを有効にします
  2. Google フェデレーションを削除します
  3. Gmail ユーザーの利用状態をリセットして、今後、電子メールのワンタイム パスコードを使用できるようにします。

延長を要求する場合、影響を受ける OAuth クライアント ID をお持ちのお客様には、Google Developers から、2022 年 1 月 31 日までに完了しなければならない 1 回限りのポリシー施行延長に関する以下の情報が記載されたメールが届いているはずです。

  • "If necessary, you may request a one-time policy enforcement extension for embedded webviews for each listed OAuth client ID until January 31, 2022. (必要に応じて、記載されている OAuth クライアント ID ごとに、2022 年 1 月 31 日までであれば、埋め込み Web ビューのポリシー施行延長を 1 回に限り、要求することができます。) For clarity, the policy for embedded webviews will be enforced on February 1, 2022 with no exceptions or extensions." (明確にするために、埋め込み Web ビューのポリシーは 2022 年 2 月 1 日に施行され、例外や延長はありません。)

許可された認証用 Web ビューに移行しているアプリケーションには影響はなく、ユーザーは通常どおり Google 経由で認証することができます。

許可された認証用 Web ビューにアプリケーションが移行されない場合、影響を受ける Gmail ユーザーには次の画面が表示されます。

Google sign-in error if apps are not migrated to system browsers

CEF/Electron と埋め込み Web ビューを区別する

埋め込み Web ビューとフレームワーク サインイン サポートの廃止に加えて、Google は Chromium Embedded Framework (CEF) ベースの Gmail 認証の廃止も行います。 Electron アプリなど、CEF で構築されたアプリケーションについて、Google は 2021 年 6 月 30 日に認証を無効にします。 影響を受けるアプリケーションには Google から直接通知が送られており、このドキュメントでは説明していません。 このドキュメントは、Google が別の日付 (2021 年 9 月 30 日) に制限する予定である、前に説明した埋め込み Web ビューに関連しています。

埋め込みフレームワークに必要な対応

Google のガイダンスに従って、ご利用のアプリが影響を受けるかどうかを判断します。

手順 1:Google 開発者プロジェクトを構成する

最初に、Google Developers Console で新しいプロジェクトを作成して、Microsoft Entra External ID に後で追加するクライアント ID とクライアント シークレットを取得します。

  1. https://console.developers.google.com で Google API に移動し、Google アカウントでサインインします。 共有のチーム Google アカウントを使用することをお勧めします。

  2. サービスの使用条件への同意を求めるメッセージが表示されたらそのようにします。

  3. 新しいプロジェクトを作成する: ページの上部にあるプロジェクト メニューを選択して、[プロジェクトの選択] ページを開きます。 [新しいプロジェクト] を選択します。

  4. [新しいプロジェクト] ページで、プロジェクトに名前 (「MyB2BApp」など) を付け、[作成] を選択します。

    Screenshot that shows a New Project page.

  5. [通知] メッセージ ボックスでリンクを選択するか、ページの上部にあるプロジェクト メニューを使用して、新しいプロジェクトを開きます。

  6. 次に、 [API とサービス] で、 [OAuth 同意画面] を選択します。

  7. [User Type] (ユーザーの種類) で、[外部] を選択し、[作成] を選択します。

  8. [OAuth 同意画面][App information] (アプリ情報) で、[Application name] (アプリケーション名) を入力します。

  9. [User support email] (ユーザー サポートのメール) でメール アドレスを選択します。

  10. [Authorized domains] (承認済みドメイン)[Add domain] (ドメインの追加) を選択してから microsoftonline.com ドメインを追加します。

  11. [Developer contact information] (開発者の連絡先情報) で、メール アドレスを入力します。

  12. [Save and continue] (保存して続行) を選択します。

  13. 左側のメニューで、[Credentials] (認証情報) を選択します。

  14. [Create credentials] (認証情報の作成) を選択してから、[OAuth client ID] (OAuth クライアント ID) を選択します。

  15. [アプリケーションの種類] メニューの [Web アプリケーション] を選択します。 アプリケーションの適切な名前を指定します (Microsoft Entra B2B など)。 [Authorized redirect URIs](承認されたリダイレクト URI) に、次の URI を追加します。

    • https://login.microsoftonline.com
    • https://login.microsoftonline.com/te/<tenant ID>/oauth2/authresp
      (<tenant ID> はご利用のテナントの ID です)
    • https://login.microsoftonline.com/te/<tenant name>.onmicrosoft.com/oauth2/authresp
      (<tenant name> はご利用のテナント名です)

    Note

    顧客テナント ID を見つけるには、Microsoft Entra 管理センター にサインインします。 [ID][概要] を選択し、テナント ID をコピーします。

  16. [作成] を選択します ご自分のクライアント ID とクライアント シークレットをコピーします。 これらはMicrosoft Entra管理センターで ID プロバイダーを追加するときに使用します。

    Screenshot that shows the OAuth client ID and client secret.

  17. テストの発行ステータスでプロジェクトを終了し、OAuth 同意画面にテスト ユーザーを追加することができます。 または、OAuth の同意画面 で [アプリの発行] ボタンを選択して、Google アカウントを持つ任意のユーザーがアプリを使用できます。

    注意

    場合によっては、アプリで Google による確認が必要になる場合があります (たとえば、アプリケーションのロゴを更新した場合)。 詳細については、Google の確認ステータスに関するヘルプを参照してください。

手順 2: Microsoft Entra 外部 IDで Google フェデレーションを構成する

次に、Google クライアント ID とクライアント シークレットを設定します。 これを行うには、Microsoft Entra 管理センターまたは PowerShell を使用できます。 自分自身を招待することで、Google フェデレーションの構成をテストしてください。 Gmail アドレスを使用し、招待を自分の招待された Google アカウントと引き換えてみます。

Microsoft Entra 管理センターで Facebook フェデレーションを構成するには

  1. Microsoft Entra 管理センター に少なくとも 外部 ID プロバイダー管理者 としてサインインしてください。

  2. ID>外部ID>すべての ID プロバイダー を参照し、Google ボタンを選択します。

  3. 前に取得したクライアント ID とクライアント シークレットを入力します。 [保存] を選択します。

    Screenshot that shows the Add Google identity provider page.

PowerShell を使用して Google フェデレーションを構成するには

  1. Microsoft Graph PowerShell モジュールの最新バージョンをインストールします。

  2. Connect-MgGraph コマンドを使用してテナントに接続します。

  3. サインイン プロンプトで、マネージド グローバル管理者アカウントを使用してサインインします。

  4. 次のコマンドを実行します。

    $params = @{
       "@odata.type" = "microsoft.graph.socialIdentityProvider"
       displayName = "Login with Google"
       identityProviderType = "Google"
       clientId = "<client ID>"
       clientSecret = "<client secret>"
    }
    
    New-MgIdentityProvider -BodyParameter $params
    

    Note

    「手順 1: Google 開発者プロジェクトを構成する」で作成したアプリのクライアント ID とクライアント シークレットを使用します。詳細については、「New-MgIdentityProvider」を参照してください。

ユーザー フローに Google ID プロバイダーを追加する

この時点で、Google ID プロバイダーは Microsoft Entra テナントで設定されています。 招待を引き換えたユーザーは、Google を使ってサインインできます。 ただし、セルフサービス サインアップ ユーザー フローを作成した場合は、ユーザー フローのサインイン ページに Google を追加する必要もあります。 Google ID プロバイダーをユーザー フローに追加するには、次のようにします。

  1. [ID]>[External Identities]>[ユーザー フロー] に移動します。

  2. Google ID プロバイダーを追加するユーザー フローを選択します。

  3. 設定で、ID プロバイダー を選択します。

  4. ID プロバイダーの一覧で、Google を選びます。

  5. [保存] を選択します。

Google フェデレーションを削除する方法

Google フェデレーション セットアップは削除できます。 そのようにした場合、招待を既に引き換えた Google ゲスト ユーザーは、サインインできません。 ただし、ユーザーの引き換え状態をリセットすることで、リソースへのアクセスを再度許可することができます。

Microsoft Entra 管理センターで Google フェデレーションを削除するには

  1. Microsoft Entra 管理センター に少なくとも 外部 ID プロバイダー管理者 としてサインインしてください。

  2. [ID]>[External Identities]>[すべての ID プロバイダー] に移動します。

  3. [Google] の行で、省略記号ボタン [...] を選択して、 [削除] を選択します。

    Screenshot that shows the Delete button for the social identity provider.

  4. [はい] を選択して、削除を確認します。

PowerShell を使用して Google フェデレーションを削除するには

  1. Microsoft Graph PowerShell モジュールの最新バージョンをインストールします。

  2. Connect-MgGraph コマンドを使用してテナントに接続します。

  3. サインイン プロンプトで、マネージド グローバル管理者アカウントを使用してサインインします。

  4. 次のコマンドを入力します。

    Remove-MgIdentityProvider -IdentityProviderBaseId Google-OAUTH
    

    Note

    詳細については、「Remove-MgIdentityProvider」を参照してください。