Токен аутентификации Mircosoft Graph API с использованием v2.0 и v1.0 - PullRequest
0 голосов
/ 14 июля 2020
$LoginUrl = "https://login.microsoft.com"

$ Tenantname = "xxxx"

$Body = @ {
    client_id = "xxxx"
    client_secret = "xxxx"
    resource  = "https://graph.microsoft.com"
    grant_type = "client_credentials"
}

$oauth = Invoke-RestMethod -Method Post -Uri $LoginUrl/$Tenantname/oauth2/v2.0/token -Body $Body

Выше моя аутентификация для получения токена для Graph API, регистрация приложения выполнена. Ошибка ниже, когда я использую для токена v2.0.

Invoke-RestMethod:    {"error":"invalid_request","error_description":"AADSTS901002: The 'resource' request parameter is not supported" ......}

Но я могу запустить его, когда использовал ниже, который я искал с веб-сайта. Я запутался, где не так и почему ниже v1.0 работает.

$oauth = Invoke-RestMethod -Method Post -Uri     $LoginUrl/$Tenantname/oauth2/token?api-version=1.0 -Body $Body

1 Ответ

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

Как описано в здесь , вам не нужен параметр ресурса (вы можете прочитать это из сообщения об ошибке) для v2-auth. Но то, что вам не хватает и что требуется согласно документу:

scope Обязательно Значение, передаваемое для параметра области в этом запросе, должно быть идентификатором ресурса (URI идентификатора приложения) нужного вам ресурса с суффиксом .default. Для Microsoft Graph это значение https://graph.microsoft.com/.default. Это значение сообщает конечной точке платформы идентификации Microsoft, что из всех разрешений приложения, которые вы настроили для своего приложения, он должен выдать токен для тех, которые связаны с ресурсом, который вы хотите использовать.

...