Я пытаюсь установить соединение между двумя арендаторами, принадлежащими разным учетным записям Azure.
Я подписался на пост: https://stackoverflow.com/a/78437433/4373243
Моя цель — использовать веб-API арендатора B, но с идентификатором клиента и секретным ключом клиента от арендатора A. Однако в настоящее время я использую tenant_id, связанный с арендатором B, а также область действия (конечную точку веб-API) арендатора B. .
Конечная точка веб-API клиента B: https://org8885b353.api.crm.dynamics.com/
$response = $this->client->post("https://login.microsoftonline.com/{tenantB_id}/oauth2/v2.0/token", [
'timeout' => 30,
'form_params' => [
'client_id' => 'tenantA_clientId',
'client_secret' => 'tenantA_clientSecret',
'scope' => 'https://org8885b353.api.crm.dynamics.com/.default',
'grant_type' => 'client_credentials',
],
]);
Когда я вызываю URL-адрес ниже, чтобы получить список всех объектов с токеном доступа из $response, мне выдается ошибка:
https://org8885b353.api.crm.dynamics.com/api/data/v9.2
"error": {
"code": "0x80072560",
"message": "The user is not a member of the organization."
}
ниже приведен скриншот разрешений API


Ошибка «Пользователь не является членом организации» обычно возникает, если пользователь приложения не создан путем добавления Application ID приложения Microsoft Entra ID в центре администрирования Power Platform.
В TenantA создано приложение и предоставлено разрешение API, как показано ниже:

В TenantB приложение добавляется как корпоративное приложение, как показано ниже:

Сгенерирован токен доступа с использованием параметров, как показано ниже:
GET https://login.microsoftonline.com/TenantBID/oauth2/token
client_id:TenantAAppID
client_secret:TenantASecret
scope: https://orgxxxxxx.crm.dynamics.com
grant_type:client_credentials

И получил ту же ошибку:
GET
https://orgXXX.api.crm.dynamics.com/api/data/v9.2

Чтобы устранить эту ошибку, создайте пользователя приложения, добавив Application ID приложения Microsoft Entra ID.
Перейдите в Центр администрирования Power Platform -> Среды -> Выберите свою организацию -> Настройки -> Пользователи + разрешения -> Выбрать пользователей приложения.

Нажмите «Новый пользователь приложения» -> «Добавить приложение» -> «Найдите приложение по идентификатору приложения» -> «Добавить».

В разделе Business Unit выберите свою организацию, назначьте роль системного администратора и выберите «Создать»:

Снова сгенерируйте токен доступа, и я смогу успешно получить ответ, как показано ниже:
GET
https://orgXXX.api.crm.dynamics.com/api/data/v9.2

Можете ли вы также отредактировать вопрос, вставив снимок экрана с разрешениями API, предоставленными приложению?