Сбой новой-AzureADMSInvitation для участника службы с разрешением администратора компании

#azure #azure-active-directory

#azure #azure-active-directory

Вопрос:

Я пытаюсь пригласить гостевого пользователя в мой клиент Azure AD, используя участника службы из многопользовательского приложения. Приложение было назначено Company Administrator в каталоге. Однако, когда я вызываю New-AzureADMSInvitation , это выдает ошибку:

 Connect-AzureAD -TenantId $AzureTenantId -ApplicationId  $AppId -CertificateThumbprint $certThumbprint

New-AzureADMSInvitation -InvitedUserDisplayName "Test User"  -InvitedUserEmailAddress "testuser@gmail.com" -InviteRedirectURL https://foo.bar.com -SendInvitationMessage $true
  
 New-AzureADMSInvitation : Error occurred while executing NewAzureADMSInvitation 
Code: Unauthorized
Message: Insufficient privileges to perform requested operation by the application '00000003-0000-0000-c000-000000000000'. 
ControllerName=MSGraphInviteAPI, ActionName=CreateInvite, URL absolute path=/api/xxxxx/invites
InnerError:
  RequestId: b44feabd-d731-4fb6-a115-1a1d0e09ba10
  DateTimeStamp: Mon, 22 Apr 2019 23:14:47 GMT
HttpStatusCode: Unauthorized
HttpStatusDescription: Unauthorized
HttpResponseStatus: Completed
At line:1 char:1
  New-AzureADMSInvitation -InvitedUserDisplayName "Test User"  -I ...
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      CategoryInfo          : NotSpecified: (:) [New-AzureADMSInvitation], ApiException
      FullyQualifiedErrorId : Microsoft.Open.MSGraphV10.Client.ApiException,Microsoft.Open.MSGraphV10.PowerShell.NewAzureADMSInvitation
  

Вот мои разрешения для приложений

Ответ №1:

Интересный вопрос имеет интересный ответ.

Эта проблема вызвана New-AzureADMSInvitation вызовом MS Graph API в серверной части. НЕ AAD Graph API

Функции в AAD Powershell фактически вызывают API-интерфейсы в серверной части. Если вы захватите трассировку fiddler, вы увидите трассировку HTTPS, используемую AAD Powershell.

Как правило, AAD Powershell просто вызывает только AAD Graph API. Однако New-AzureADMSInvitation вызовите этот MS Graph API в серверной части:

POST https://graph.microsoft.com/beta/invitations

Вы можете видеть, что эта команда включает в себя MS, это означает, что она фактически вызывает MS Graph.

Решение:

Поскольку вы используете участника службы для подключения AAD, AAD Powershell получит access_token с разрешениями приложения. Поэтому, пожалуйста, перейдите на портал Azure> Регистрация приложения > Найдите свое приложение> Настройки> Требуемые разрешения > Добавить Microsoft Graph API > Выберите Directory.ReadWrite.All в разрешении приложения. Пожалуйста, также не забудьте нажать Grant Permissions кнопку, чтобы подтвердить разрешения.

Повторно подключите AAD Powershell и попробуйте.

Комментарии:

1. Спасибо за ответ. Тем не менее, я попробовал шаги, о которых вы упомянули, и я все еще получаю ту же ошибку. Я пробовал как в домашнем, так и во внешнем клиенте приложения.

2. Привет @MichaelSabin Могу я узнать, нажали ли вы кнопку «Предоставить разрешения» после Directory.ReadWrite.All добавления Application Permission ?

3. Добавлено изображение разрешений

4. Вам необходимо добавить разрешения приложения, а не делегированные разрешения, поскольку вы используете участника службы для входа в AAD.