次の方法で共有


Microsoft Entra B2B を使用して基幹業務アプリケーションに外部ユーザーをオンボードする

アプリケーション開発者は、Microsoft Entra B2B を使用して、基幹業務 (LOB) アプリケーションで外部ユーザーをオンボードして共同作業を行うことができます。 多くの Office 365 アプリケーションの [共有] ボタンと同様に、アプリケーション開発者は、Microsoft Entra ID と統合されている LOB アプリケーションにワンクリックの招待エクスペリエンスを作成できます。

そのメリットは次のとおりです。

  • ユーザーのオンボーディングと LOB アプリケーションへのアクセス。 ユーザーはいくつかの手順でアクセスできます
  • 外部ユーザーが自分の ID を持ち込んでシングル サインオン (SSO) を実行します
  • Microsoft Entra ID への外部 ID プロビジョニング
  • 多要素認証などの承認ポリシーを適用する、Microsoft Entra の条件付きアクセスとテナント間アクセス ポリシー

統合フロー

LOB アプリケーションを Microsoft Entra B2B と統合するには、次のパターンに従います。

LOB アプリケーションの統合を示すスクリーンショット。

  1. エンド ユーザーが LOB アプリケーション内で 招待 をトリガーし、外部ユーザーのメール アドレスを提供します。 アプリケーションでユーザーが既に存在するかどうかがチェックされ、存在しない場合は「招待を作成して送信する」| に進みます
  2. アプリケーションが、ユーザーの代わりに Microsoft Graph API に 投稿する を送信します。 そして、「外部ユーザーがディレクトリに存在することを確認する」で定義したリダイレクト URL と外部ユーザーのメールアドレスが提供されます。
  3. Microsoft Graph API が、Microsoft Entra ID でゲスト ユーザーをプロビジョニングします。
  4. Microsoft Graph API が、API 呼び出しの成功または失敗の状態を返します。 成功の場合、応答には Microsoft Entra ユーザー オブジェクト ID と、招待されたユーザーのメール アドレスに送信される招待リンクが含まれます。 Microsoft メールをやめて、独自のカスタム メールを送信できます。
  5. (任意) 招待されたユーザーにさらに属性を書き込むか、招待されたユーザーをグループに追加します。 アプリケーションは、Microsoft Graph API に対して追加の API 呼び出しを行います。
  6. (任意) Microsoft Graph API により、Microsoft Entra ID に対する更新が行われます。
  7. (任意) Microsoft Graph API が、成功または失敗の状態をアプリケーションに返します。
  8. アプリケーションが、ユーザーのオブジェクト ID 属性を不変 ID として使用して、ユーザーをそのデータベースまたはバックエンド ユーザー ディレクトリにプロビジョニングします。
  9. アプリケーションにより、エンド ユーザーに成功または失敗の状態が表示されます。

LOB アプリケーションにアクセスするのに割り当てが必要な場合は、招待されたゲスト ユーザーはアプリケーション ロールを持つアプリケーションに割り当てられます。 招待されたゲストをグループに追加する別の API 呼び出しとしてこのアクションを有効化するか、Microsoft Entra 動的メンバーシップ グループを使用してメンバーシップを自動化してください。 動的メンバーシップ グループでは、アプリケーションによる別の API 呼び出しは必要ありません。ただし、ユーザーの招待を介してグループにユーザーを追加するのと同じくらい迅速に更新されます。

外部ユーザーがディレクトリに存在することを確認する

外部ユーザーが招待され、オンボードされている可能性があります。 LOB アプリケーションは、そのユーザーがディレクトリに存在するかどうかをチェックします。 Microsoft Graph API に対して API 呼び出しを行い、選択する招待元ユーザーへの一致を提示してください。

次に例を示します。

Application Permission: User.read.all

GET https://graph.microsoft.com/v1.0/users?$filter=othermails/any(id:id eq 'userEmail@contoso.com')  

応答でユーザーの詳細を受け取った場合、そのユーザーはディレクトリに存在します。 招待元ユーザーに返されたユーザーを提示します。 アクセス権を取得する外部ユーザーの選択をユーザーに許可します。 アプリケーションへのアクセス権をユーザーに付与するには、API 呼び出しを行うか、他のプロセスをトリガーします。

招待の作成と送信

外部ユーザーがディレクトリに存在しない場合は、Microsoft Entra B2B を使用してユーザーを招待し、Microsoft Entra テナントにオンボードします。 Microsoft Graph API への招待要求に含める内容を決定します。

次の要素を使用してください。

  • エンド ユーザーに外部ユーザーのメール アドレスの入力を求める
  • 招待されたユーザーを認証して B2B 招待と引き換えた後、招待されたユーザーをリダイレクトする招待 URL を決定する
    • このURL は、汎用ランディング ページを指定するか、エンド ユーザーが招待をトリガーした場所に基づき LOB アプリケーションにより動的に決定することができます。

招待要求に関するその他のフラグおよび属性:

  • 招待されたユーザーの表示名
  • 既定の Microsoft 招待メールを使用するか、既定のメールをやめて独自のメールを作成する

アプリケーションは、必要な情報を収集した後、Microsoft Graph API 招待マネージャーに要求を POST する必要があります。 アプリケーションの登録に Microsoft Entra ID のアクセス許可があることを確認してください。

次に例を示します。

Delegated Permission: User.Invite.All

POST https://graph.microsoft.com/v1.0/invitations  
Content-type: application/json

{ 
"invitedUserDisplayName": "John Doe",  
"invitedUserEmailAddress": "john.doe@contoso.com",  
"sendInvitationMessage": true,  
"inviteRedirectUrl": "https://customapp.contoso.com"  
} 

メモ

招待の JSON 本文のオプションを確認するには、Microsoft Graph v1.0 の「招待リソースの種類」をご覧ください。

アプリケーション開発者は、Microsoft Entra のセルフサービス サインアップまたはエンタイトルメント管理アクセス パッケージを使用して、外部ユーザーをオンボードすることができます。 セルフサービス サインアップ URL またはアクセス パッケージ URL を含むカスタム メールをトリガーする [Invitation] (招待) ボタンを LOB アプリケーションに作成してください。 招待されたユーザーはオンボードし、アプリケーションにアクセスします。

(任意) Microsoft Entra ID に他の属性を書き込む

重要

ディレクトリ内のユーザーを更新するためのアプリケーションのアクセス許可を付与することは、高い特権が必要なアクションです。 これらの高い特権のアクセス許可をアプリケーションに付与する場合は、LOB アプリをセキュリティで保護して監視してください。

組織または LOB アプリケーションは、トークンの要求出力や詳細な承認ポリシーなど、将来使用するために保存した情報が必要になる場合があります。 外部ユーザーが Microsoft Entra ID 内に招待または作成されると、アプリケーションは別の API 呼び出しを行って、その外部ユーザーを更新することができます。 アプリケーションには、追加の API アクセス許可と、Microsoft Graph API への追加の呼び出しが必要になります。

ユーザーを更新するには、招待 API 呼び出しから作成されたゲスト ユーザーのオブジェクト ID、存在チェックまたは招待からの API 応答にある ID 値を使用します。 任意の標準属性またはカスタム拡張属性に書き込むことができます。

次に例を示します。

Application Permission: User.ReadWrite.All

PATCH https://graph.microsoft.com/v1.0/users/<user's object ID> 
Content-type: application/json

{ 
"businessPhones": [ 
        "+1 234 567 8900" 
    ], 
"givenName": "John" 
"surname": "Doe", 
"extension_cf4ff515cbf947218d468c96f9dc9021_appRole": "external" 
} 

詳細については、Microsoft Graph v1.0 の「ユーザーを更新する」をご覧ください。

(任意) 招待されたユーザーをグループに割り当てる

メモ

アプリケーションへのアクセスにユーザー割り当てが必要ない場合は、この手順をスキップできます。

アプリケーションへのアクセスやロールの割り当てに Microsoft Entra ID でユーザーの割り当てが必要な場合は、ユーザーはアプリケーションに割り当てられます。 それ以外の場合、ユーザーは認証に関係なくアクセスできません。 招待された外部ユーザーをグループに追加するには、別の API 呼び出しを行います。 グループがアプリケーションに割り当てられ、アプリケーション ロールにマップされます。

アクセス許可の例: グループ アップデーター ロールまたはカスタム ロールをエンタープライズ アプリケーションに割り当てます。 このアプリケーションが更新するグループにロールの割り当てのスコープを設定します。 または、Microsoft Graph API で group.readwrite.all アクセス許可を割り当てます。

POST https://graph.microsoft.com/v1.0/groups/<insert group id>/members/$ref 
Content-type: application/json

{ 
"@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/<insert user id>" 
} 

詳細については、Microsoft Graph v1.0 の「メンバーを追加する」をご覧ください。

または、特定の属性 (userType、メールアドレス、カスタム属性など) に基づいてユーザーを自動的に割り当てる Microsoft Entra 動的メンバーシップ グループを使用することもできます。 ただし、ユーザーのアクセスに時間的な制約がある場合は、動的メンバーシップ グループの設定に最大 24 時間かかる可能性があるため、このアプローチは推奨されません。

動的メンバーシップ グループを使用する場合は、別の API 呼び出しでユーザーをグループに追加しないでください。 代わりに、userType、メールアドレス、カスタム属性などの属性に基づいて、ユーザーをグループ メンバーとして追加する動的グループを作成してください。 詳細については、動的グループの作成または編集、および状態の取得 を参照してください。

招待されたユーザーをアプリケーションにプロビジョニングする

招待された外部ユーザーが Microsoft Entra ID にプロビジョニングされると、Microsoft Graph API は、オブジェクト ID やメールアドレスなどのユーザー情報を含む応答を返します。 LOB アプリケーションは、そのディレクトリまたはデータベースにユーザーをプロビジョニングします。 アプリケーションの種類と、アプリケーションが使用する内部ディレクトリの種類によって、このプロビジョニングは異なります。

Microsoft Entra ID とアプリケーションに外部ユーザーがプロビジョニングされると、LOB アプリケーションは、招待元ユーザーにプロセスが成功したことを通知します。 招待済みユーザーは、招待している組織のオンボーディングや追加の認証情報の発行なしに、自分の ID で SSO を取得します。 Microsoft Entra ID は、条件付きアクセス、Microsoft Entra 多要素認証、Microsoft Entra ID 保護などの承認ポリシーを適用できます。

その他の考慮事項

LOB アプリケーションでエラー処理が行われていることを確認してください。 アプリケーションは、各 API 呼び出しを検証します。 失敗した場合は、追加の試行またはエラー メッセージが役立ちます。

LOB アプリケーションで外部ユーザーが更新されるようにするには、アプリケーションがユーザーを更新してスコープを動的管理単位に割り当てることを許可するカスタム ロールを付与してください。 たとえば、usertype = guest であるユーザーを含む動的管理単位を作成します。 外部ユーザーが Microsoft Entra ID にオンボードされると、管理単位に追加されます。 LOB アプリケーションはユーザーの更新を試みる必要があり、遅延がある場合は複数回の試行が必要になる場合があります。 遅延はありますが、このアプローチにより、ディレクトリ内のユーザーを更新するためのアクセス許可を付与しなくても、LOB アプリケーションは外部ユーザーを更新できます。