Получение встроенного токена для Power BI, встроенного в приложение Angular - PullRequest
0 голосов
/ 06 января 2020

Я хочу сгенерировать встроенный токен для Power BI на Angular. В настоящее время я нахожусь в организации, использующей собственную версию power BI (xyz.powerbi.com) и имеющей Azure AD для аутентификации.

Выполненные шаги:

  1. Добавлена ​​служба Power BI для регистрации приложения Azure AD. Предоставлен доступ организации для того же.

  2. Нажмите конечную точку аутентификации для получения токена доступа - https://login.microsoftonline.com/tenantId/oauth2/token с идентификатором клиента и секрет клиента вместе с ресурсом как https://analysis.windows.net/powerbi/api и получил токен доступа.


Как использовать этот токен доступа для генерации встроенного токена путем попадания в конечные точки Power Bi ??

Является ли вышеупомянутый метод правильным способом создания токена доступа Azure AD для попадания в Power BI API?

Встроенный токен будет в дальнейшем использоваться для встраивания отчета Power BI в приложение.


Сложности возникли: Я попытался сгенерировать встроенный токен Power BI, нажав следующий REST api

https://api.powerbi.com/v1.0/myorg/groups/group-id/reports/report-id/GenerateToken

, используя токен доступа, сгенерированный из Azure AD на вкладке Авторизация и соответствующий тело, как указано в https://docs.microsoft.com/en-us/rest/api/power-bi/embedtoken/reports_generatetokeningroup

I есть не предоставлена ​​(преднамеренная) комбинация имя пользователя / пароль и требуется использовать токен доступа azure AD для привилегий доступа.

Я получил 401 несанкционированный, как и ожидалось. Как мне это преодолеть ??

Ответы [ 2 ]

0 голосов
/ 13 января 2020

Произошла ошибка, сгенерировав токен доступа к ресурсу https://analysis.windows.net/powerbi/api через учетные данные клиента (секрет клиента и идентификатор клиента) через PostMan, хотя токен доступа похож на созданный токен описанным ниже способом.

Я снова сгенерировал токен доступа с помощью библиотеки adal в angular и передал токен доступа компоненту Embedded Power BI, и он заработал.

Нет необходимости генерировать встроенный токен отдельно, как указано в официальной документации.

0 голосов
/ 07 января 2020

Вы получаете 401 несанкционированную ошибку, потому что вы не установили Авторизацию (формат значения должен быть заголовком "bearer {access token from Azure AD}") при вызове /GenerateToken конечной точки.

Убедитесь, что вы назначил следующие делегированные разрешения в Azure приложении AD: Report.ReadWrite.All или Report.Read.All , Dataset.ReadWrite.All или Dataset.Read.All , Content.Create .

Вы можете установить их здесь: enter image description here

И затем вам нужно использовать следующий запрос для генерации встроенного токена:

 POST https://api.powerbi.com/v1.0/myorg/groups/{GROUP ID}/reports/{REPORT ID}/GenerateToken
    headers = {
    Authorization: Bearer {access_token from Azure AD}
    Content-Type:application/json; charset=utf-8
    Accept:application/json
    }
    data= {
      "accessLevel": "View",
      "allowSaveAs": "false"
    }

Вот пример ответа:

{
    "@odata.context": "http://wabi-west-us-redirect.analysis.windows.net/v1.0/myorg/groups/{GROUP_ID}/$metadata#Microsoft.PowerBI.ServiceContracts.Api.V1.GenerateTokenResponse",
    "token": "H4sIAAAAAAA...",
    "tokenId": "...",
    "expiration": "yyyy-mm-ddTxx:xxxxx"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...