Azure Маркер доступа REST не работает - похоже, одна из команд неверна? - PullRequest
0 голосов
/ 31 марта 2020

Итак, последние несколько дней я работал над тем, чтобы REST работал с нашим azure, чтобы выполнить пару тысяч небольших изменений. Я думаю, что есть команда REST, чтобы сделать это, но я все еще пытаюсь установить правильную аутентификацию. Поэтому вчера я нашел этот код в stackoverflow (в вопросе 49211916)

##get token
$TENANTID=""
$APPID=""
$PASSWORD=""
$result=Invoke-RestMethod -Uri https://login.microsoftonline.com/$TENANTID/oauth2/token?api-version=1.0 -Method Post -Body @{"grant_type" = "client_credentials"; "resource" = "https://management.core.windows.net/"; "client_id" = "$APPID"; "client_secret" = "$PASSWORD" }
$token=$result.access_token

$Headers=@{
    'authorization'="Bearer $token"
    'host'="management.azure.com"
    'contentype'='application/json'
}

Выглядит хорошо для меня. Я уже создал приложение в AAD, поэтому я копирую и вставляю для него 3 первых значения.

Затем я приступаю к своей реальной задаче - изменению категории устройства в Intune. Итак, я запускаю код, который я нашел в вопросе 957046 несколько дней спустя go:

     #this is an example for 1 device:
 $intuneDeviceId = 'deadbeef-aaaa-bbbb-cccc-0123456789ab' #update the IntuneDeviceID, you will need to implement a loop for mutiple devices
 $deviceCategoryReqBody = '{"@odata.id":"https://graph.microsoft.com/beta/deviceManagement/deviceCategories/98765432-aaaa-bbbb-cccc-0123456789ab"}' #update the deviceCateg id
 $patchDeviceReqBody = '{}'

 #Running a GET method on the device ID to check its validity
 Invoke-RestMethod -Uri "https://graph.microsoft.com/beta/deviceManagement/managedDevices/$intuneDeviceId/deviceCategory" -Headers $authToken -Method Get

 #calling the PUT method to update device category for that specific device
 Invoke-RestMethod -Uri "https://graph.microsoft.com/beta/deviceManagement/managedDevices/$intuneDeviceId/deviceCategory/`$ref" -Headers $authToken -Method Put -Body $deviceCategoryReqBody

 #calling the PATCH method to update device details about device category
 Invoke-RestMethod -Uri "https://graph.microsoft.com/beta/deviceManagement/managedDevices/$intuneDeviceId" -Headers $authToken -Method Patch -Body $patchDeviceReqBody

  #Running a GET method on the device ID to check its validity
 Invoke-RestMethod -Uri "https://graph.microsoft.com/beta/deviceManagement/deviceCategories/" -Headers $authToken -Method Get

#endregion

Я подставляю переменные и получаю сообщение об ошибке, когда уже выполняется первая команда GET:

Invoke-RestMethod : The underlying connection was closed: Could not establish trust rel
ationship for the SSL/TLS secure channel.

Чего мне не хватает? Как я уже сказал, я зарегистрировал приложение в AAD (там я получаю идентификатор арендатора, идентификатор приложения и пароль). Я добавил разрешения API, но я не являюсь глобальным администратором для нашего клиента, поэтому в настоящее время он имеет статус «Не предоставлено для Contoso». Должен ли глобальный администратор утвердить его до того, как я вызову метод rest, или это на следующих шагах, а не мое беспокойство сейчас?

1 Ответ

0 голосов
/ 31 марта 2020

Не уверен насчет ошибки TLS, но это определенно не правильно:

"resource" = "https://management.core.windows.net/"

Замените это на https://graph.microsoft.com, чтобы получить токен для Microsoft Graph API.

Также администратор приложения / облачное приложение администратор / глобальный администратор должен согласиться с вашими разрешениями на вкладке разрешений API, прежде чем он заработает. Разрешения на уровне приложения всегда требуют согласия администратора.

...