Power BI - получить токен JWT из API авторизации - PullRequest
0 голосов
/ 25 июня 2018

Я разработал API, который требует токены доступа JWT, которые содержат утверждения пользователя и должны быть представлены в качестве заголовка авторизации для получения каких-либо данных.Он отлично работает при отправке запросов через Postman или через HTTP-клиент .NET и является довольно стандартной реализацией.

Теперь наш бизнес хотел бы подключаться к данным через наши API-интерфейсы с помощью Power BI.У нас нет большого опыта с этим, но я понимаю основы.Посмотрели несколько видео PluralSight и т. Д., Чтобы ознакомиться.У меня действительно возникают проблемы с получением токена для использования в запросах.

Я погуглил и нашел https://community.powerbi.com/t5/Desktop/Pull-data-from-RESTful-API-with-token-authentication/td-p/80531, последний ответ которого, кажется, такой, какой я есть.ищу.

У меня есть этот запрос:

let

GetJson = Web.Contents("https://mydomain.co.uk/api/token",
[
Headers = [#"Accept"="application/json",
#"Content-Type"="application/x-www-form-urlencoded"],
Content = Text.ToBinary("grant_type=password&username=me&password=My_Pass11")
]
),
FormatAsJson = Json.Document(GetJson),
#"Converted to Table" = Record.ToTable(FormatAsJson),
#"Expanded Value" = Table.ExpandRecordColumn(#"Converted to Table", "Value", {"Data"}, {"Data"}),
#"Expanded Data" = Table.ExpandRecordColumn(#"Expanded Value", "Data", {"access_token", "expires_in", "culture", "resourceList", "roles", "applicationId", "userCurrency", "userDateFormat", "userProductWeight", "roleNames"}, {"access_token", "expires_in", "culture", "resourceList", "roles", "applicationId", "userCurrency", "userDateFormat", "userProductWeight", "roleNames"}),
access_token = #"Expanded Data"{0}[access_token]
in
access_token

Имеет смысл, почему это будет работать, но когда я закрываю редактор запросов, Power BI пытается подключиться и показывает ошибку «Мыне удалось подтвердить подлинность с предоставленными учетными данными. Пожалуйста, попробуйте еще раз. "Если я нажимаю кнопку «Изменить учетные данные», я перехожу к настройкам веб-запроса для запроса, который на самом деле не поможет, поскольку это HTTP-сообщение без аутентификации (поэтому установлено значение «Аноним»).Есть мысли, как с этим разобраться?

1 Ответ

0 голосов
/ 26 июня 2018

Изменение запроса на это (используя параметры имени пользователя и пароля сейчас):

let

GetJson = Web.Contents("https://mydomain.co.uk/api/token",
[
Headers = [#"Content-Type"="application/x-www-form-urlencoded"],
Content = Text.ToBinary("grant_type=password&username=" &Username&"&password="&Password&"&clienttype=User")
]
),
FormatAsJson = Json.Document(GetJson),
#"Converted to Table" = Record.ToTable(FormatAsJson),
access_token = #"Converted to Table"{0}[Value]
in
access_token

Проблема теперь решена. Теперь мне просто нужно разобраться, как использовать access_token в другом запросе ...

...