#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.