使用 Microsoft Entra B2B 將外部使用者上線至企業營運應用程式
應用程式開發人員可以使用 Microsoft Entra B2B,在企業營運 (LOB) 應用程式內將外部使用者上線並與他們共同作業。 與許多 Office 365 應用程式中的 共用 按鈕類似,應用程式開發人員可以在任何與 Microsoft Entra ID 整合的 LOB 應用程式中建立一鍵邀請體驗。
這些權益包括:
- 使用者上線並存取 LOB 應用程式。 使用者可透過幾個步驟存取
- 讓外部使用者攜帶自己的身分識別,執行單一登入 (SSO)。
- 外部身分識別佈建至 Microsoft Entra ID
- 套用 Microsoft Entra 條件式存取和跨租用戶存取原則,強制執行授權原則,例如要求多重要素驗證。
整合流程
若要整合 LOB 應用程式與 Microsoft Entra B2B,請遵循這個模式:
- 終端使用者在 LOB 應用程式中觸發邀請,並提供外部使用者的電子郵件地址。 應用程式檢查使用者是否已存在,如果不存在,則繼續進行 建立並傳送邀請|
- 應用程式會代表使用者將 POST 傳送至 Microsoft Graph API。 它會提供重新導向 URL 和外部使用者的電子郵件,其定義於 確認外部使用者位於目錄中。
- Microsoft Graph API 會在 Microsoft Entra ID 佈建來賓使用者。
- Microsoft Graph API 會傳回 API 呼叫的成功或失敗狀態。 如果成功,回應會包含 Microsoft Entra 使用者物件 ID,以及傳送至受邀使用者電子郵件的邀請連結。 您可以隱藏 Microsoft 電子郵件,並傳送您自己的自訂電子郵件。
- (選用)將更多屬性寫入受邀使用者,或將受邀使用者新增至群組。 應用程式會對 Microsoft Graph API 進行額外的 API 呼叫。
- (選用) Microsoft Graph API 會對 Microsoft Entra ID 進行更新。
- (選用) Microsoft Graph API 會將成功或失敗狀態傳回應用程式。
- 應用程式會使用使用者的物件 ID 屬性,將使用者當成不可變的 ID,佈建至自己的資料庫或後端使用者目錄。
- 應用程式會向終端使用者呈現成功或失敗狀態。
如果需要指派才能存取 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 邀請電子郵件,或是隱藏預設電子郵件,建立自己的電子郵件。
應用程式收集必要的資訊後,應用程式必須以 POST 的方式,將要求傳送給 Microsoft Graph API 邀請管理員。 請確定應用程式註冊具有 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 自助式註冊或權利管理存取套件,將外部使用者上線。 您可以在 LOB 應用程式中建立 [邀請]按鈕,以觸發包含自助式註冊 URL 或存取套件 URL 的自訂電子郵件。 受邀的使用者會上線並存取應用程式。
(選用) 將其他屬性寫入至 Microsoft Entra ID
重要
授與應用程式權限以更新目錄中的使用者,是高特殊權限的動作。 如果您將這些高特殊權限授與應用程式,請保護和監視 LOB 應用程式。
您的組織或 LOB 應用程式可能需要儲存更多資訊以供日後使用,例如在權杖中發出宣告或細微的授權原則。 在 Microsoft Entra ID 中邀請或建立外部使用者之後,應用程式可以進行另一個 API 呼叫來加以更新。 應用程式必須有額外的 API 權限,而且必須對 Microsoft Graph API 進行額外的呼叫。
若要更新使用者,請使用邀請 API 呼叫中已建立來賓使用者的物件識別碼、來自存在檢查或邀請的 API 回應中的識別碼值。 您可以寫入至任何標準屬性或自訂擴充屬性。
例如:
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 中新增成員 (英文)。
或者,您可以使用 Microsoft Entra 動態成員資格群組,根據特定屬性自動指派使用者,例如 userType、電子郵件或自訂屬性。 不過,如果使用者存取權有時效性,則不建議使用這種方法,因為動態成員資格群組可能需要長達 24 小時的時間才能填入。
如果您使用動態成員資格群組,請不要透過另一個 API 呼叫來將使用者新增至群組。 改為建立群組,根據 userType、電子郵件或自訂屬性等可用屬性,將使用者新增為群組的成員。 如需詳細資訊,請參閱建立或編輯動態群組並取得狀態。
將受邀的使用者佈建至應用程式
將受邀的外部使用者佈建至 Microsoft Entra ID 後,Microsoft Graph API 所傳回的回應包含使用者資訊,例如物件識別碼與電子郵件。 LOB 應用程式會將使用者佈建至自己的目錄或資料庫。 視應用程式所使用的應用程式類型和內部目錄類型而定,佈建會有所不同。
在 Microsoft Entra ID 與應用程式中佈建外部使用者之後,LOB 應用程式可以通知起始使用者的流程已成功完成。 受邀使用者藉由其身分識別取得 SSO,無需邀請的組織上線並發出額外的認證。 Microsoft Entra ID 會透過條件式存取、Microsoft Entra 多重要素驗證,以及 Microsoft Entra ID Protection,強制執行授權原則,。
其他考量
確定已在 LOB 應用程式完成錯誤處理。 應用程式會驗證每個 API 呼叫。 若不成功,額外進行嘗試或顯示錯誤訊息會很有用。
如需 LOB 應用程式更新受邀的外部使用者,請授與自訂角色,允許應用程式更新使用者,並將範圍指派為動態管理單位。 例如,建立動態管理單位,其中包含 usertype = guest 的使用者。 當外部使用者上線至 Microsoft Entra ID 後時,隨即會新增至管理單位。 LOB 應用程式必須嘗試更新使用者,而且如果出現延遲,可能需要多次嘗試。 儘管有所延遲,但這是讓 LOB 應用程式在不將權限授與更新目錄中任何使用者的情況下,更新外部使用者的最佳方法。