Ошибка добавления Graph API через разрешение приложения az ad - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь добавить Graph API через Cli 2.x. Вот сценарий PowerShell, который я запускаю

#
# (1) Register the app, replyUrl, enable implicitflow
#
Write-Host " -  Create Application " + $appName
az ad app create --display-name "$appName" --reply-urls "$replyUrl" --oauth2-allow-implicit-flow true

#
# (2) get the app id into a variable
#
$appId=$(az ad app list --display-name $appName --query [].appId -o tsv)

#
# (3) API Permissions, add Graph API/Permission (delegated)
    
#
Write-Host " -  Add Graph API/Permission (delegated)"
az ad app permission add --id $appid --api 00000002-0000-0000-c000-000000000000 --api-permissions 311a71cc-e848-46a1-bdf8-97ff7156d8e6=Scope

#
# (4) Grant permissions based on the error/warning from the previous step
    
#
Write-Host " -  Grant permissions"
az ad app permission grant --id $appid --api 00000002-0000-0000-c000-000000000000

Я вытащил идентификатор --api-permissions из этой ссылки . Строка сценария az ad app permission add выдает эту ошибку (или предупреждение):

az: Вызов разрешения на разрешение приложения «az ad» --id xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --api 00000002-0000 -0000-c000-000000000000 "необходим для того, чтобы изменение вступило в силу. C: \ temp \ CP \ CreateAppRegistration.ps1: 42 символа: 5 az ad app разрешение добавить --id $ appid --api 00000002-0000-0000 -c00 ... CategoryInfo: NotSpecified: (Вызов "az ad ... hange effective: String) [], RemoteException FullyQualifiedErrorId: NativeCommandError

Затем я пытаюсь вызвать сценарий в ошибке разрешение на доступ к приложению az ad и появляется следующая ошибка:

az: операция завершилась неудачно со статусом «не найден». Подробности: ошибка клиента 404: не найдено для URL: https://graph.windows.net/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/oauth2PermissionGrants? $ filter = clientId% 20eq% 20% 27e62c4745- cccc - cccc - cccc -71e5599261fc% 27 & api-version = 1.6 В C: \ temp \ CP \ CreateAppRegistration.ps1: 45 символов: 5 az, разрешение на разрешение приложения для рекламы --id $ appid --api 00000002-0000-00 00- c ... CategoryInfo: NotSpecified: (Operation faile ... api-version = 1.6: String) [], RemoteException FullyQualifiedErrorId: NativeCommandError

Может ли кто-нибудь помочь мне понять, если мне нужно для выполнения сценария (# 4 выше) из-за ошибки, сгенерированной из # 3 выше ?? Или почему №3 выше возвращает ошибку / предупреждение? Я говорю предупреждение, потому что Graph API, похоже, добавляется, но я не уверен, что он находится в правильном состоянии согласно сообщению об ошибке.

"разрешение на разрешение приложения az ad --id xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --api 00000002-0000-0000-c000-000000000000 "необходимо, чтобы изменение вступило в силу"

1 Ответ

0 голосов
/ 14 июля 2020

Теоретически вам требуется для выполнения сценария (# 4 выше) в соответствии с предупреждением, сгенерированным из # 3 выше.

Вы получаете сообщение «Ошибка клиента 404: не найдено для URL-адреса» означает, что endpont https://graph.windows.net/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/oauth2PermissionGrants?$filter=clientId%20eq%20%27e62c4745-cccc-cccc-cccc-71e5599261fc%27&api-version=1.6 возвращает нулевой результат.

cmd az ad app permission grant сначала запросит его, а затем вставит новое разрешение. Ошибка возникает на этапе запроса. Я не думаю, что это разумно. Ваше требование - добавить разрешение, но этот cmd должен сначала запросить существующее разрешение. Если результат пуст, вы не сможете его добавить.

Таким образом, logi c для этого cmd az ad app permission grant в настоящее время не идеален. Это может работать лучше для существующего приложения Azure AD (которое имеет субъект-службу), но не для нового созданного приложения Azure AD (которое не имеет субъекта-службы).

Обходной путь - использовать az ad app permission admin-consent --id $appid вместо az ad app permission grant. См. Ссылку здесь . Он охватывает то, что может az ad app permission grant.

После того, как вы выполните az ad app permission admin-consent один раз, он сгенерирует принципала службы для приложения Azure AD, а затем вы сможете использовать az ad app permission grant позже.

...