Azure HTTP POST-запросы на токен доступа из Power BI - PullRequest
0 голосов
/ 11 марта 2020

Можно ли получить azure токен доступа к приложению AD из Power Power-запроса с HTTP-запросами POST?

HTTP-запросы POST:

//request url
https://login.microsoftonline.com/<tenant id>/oauth2/token

//header
Content-Type: application/x-www-form-urlencoded

//request body
grant_type=client_credentials
client_id=625bc9f6xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
client_secret=bCBxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
resource=api://xxxxxxxxxxxxxxxxxxxxxxxxxxx

Ref: https://docs.microsoft.com/en-us/azure/active-directory/azuread-dev/v1-oauth2-client-creds-grant-flow#example

Хорошо, выглядит довольно просто, отлично работает с запросом Postman или python и показывает успешный ответ с данными json. Теперь, в чем заключается моя проблема, я хочу, чтобы через этот запрос с Power BI power query вот мой power query

let
  apiUrl = "https://login.microsoftonline.com/<tenant id>/oauth2/token",
    body = "{
    ""grant_type"": ""client_credentials"",
    ""client_id"": ""625bc9f6xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"",
    ""client_secret"": ""bCBxxxxxxxxxxxxxxxxxxxxxxxxxxx"",
    ""resource"": ""api://xxxxxxxxxxxxxxxxxxxxxxxxxxx""
    }",

  Source = Web.Contents(apiUrl, [Headers=[#"Content-Type"="application/x-www-form-urlencoded"],
           Content=Text.ToBinary(body)]),
  FormatAsJson = Json.Document(Source)
in
    FormatAsJson

Но там было указано «Плохой запрос»

DataSource.Error: Web.Contents failed to get contents from 
'https://login.microsoftonline.com/61ed5503-xxxxxxxxxxxxxxxxx/oauth2/token' (400): Bad Request

Чего мне не хватает или почему это говорит плохой запрос? Это причина того, что это не REST API? или есть ли другой способ сделать это? 1025 * это?

1 Ответ

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

Я решил это, на самом деле есть некоторые дополнительные термины, которые я должен был добавить, а также глупая ошибка с моей стороны, Правильный запрос

let
  apiUrl = "https://login.windows.net/61xxxxxxxxxxxx/oauth2/token",
    body = [
          client_id="3728xxxxxxxxxxxxxx5",
          grant_type="client_credentials",
          client_secret="bxxxxxxxxxxxxh",
          resource="api://xxxxxxxxxxxxxxxx5"
],

  Source = Json.Document(Web.Contents(apiUrl, [Headers = [Accept = "application/json"],
 Content = Text.ToBinary(Uri.BuildQueryString(body))]))
in
Source
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...