У меня проблема с аутентификацией в Azure Active Directory, которая связана со службой Power BI. Я пытаюсь получить токен доступа, чтобы получить доступ к API power bi rest.
Если я использую почтальона, я могу успешно использовать их логин OAuth2 для получения токена с правильными учетными данными для связи с API power bi rest.
Однако, когда я пытаюсь сделать это с помощью adal.js, токен недействителен. Чтобы упростить воспроизведение, я основал свой проект на
https://github.com/Azure-Samples/active-directory-angularjs-singlepageapp-dotnet-webapi
Вам необходимо обновить конфигурацию окна в: \ active-directory-javascript-singlepageapp-dotnet-webapi \ TodoSPA \ App \ Scripts \ app.js
window.config = {
instance: 'https://login.microsoftonline.com/',
tenant: <insert tenant>,
clientId: <insert clientid>,
postLogoutRedirectUri: window.location.origin,
cacheLocation: 'localStorage', // enable this for IE, as sessionStorage does not work for localhost.
endpoints: {
"https://api.powerbi.com": "https://analysis.windows.net/powerbi/api",
}
};
Временное решение. Я могу получить токен с помощью автоматической аутентификации, при которой вам нужно жестко ввести имя пользователя и пароль.
Я следил за этим http://community.powerbi.com/t5/Developer/How-to-use-Power-BI-Rest-API-without-GUI-authentication-redirect/mp/14218#M119 для создания запроса на тихую аутентификацию:
Post Url: https://login.windows.net/<tenant>/oauth2/token
Body:
password: <password>
username: <username>
client_id: <clientid>
client_secret: <secret>
grant_type: password
scope: openId
resource: https://analysis.windows.net/powerbi/api
Я также подтвердил, что учетная запись, которую я использовал, имеет правильное разрешение с помощью почтальона и авторизации с помощью OAuth2. Полученный мной токен имел правильное разрешение для PowerBI.
Конфигурация почтальона
В почтальоне нажмите вкладку «Авторизация» -> Установите для типа значение OAuth2.0 -> Получить новый токен доступа:
Конфигурация, которую вы бы использовали:
AuthUrl: https://login.microsoftonline.com/ / oauth2 / authorize? Resource = https://analysis.windows.net/powerbi/api
URL-адрес токена доступа: https://login.microsoftonline.com/ / oauth2 / token
Тип гранта: Код авторизации:
Идентификатор клиента: Секрет клиента:
Перейдите на страницу https://dev.powerbi.com/apps, чтобы сгенерировать clientID / ClientSecret и установите URL перенаправления: https://www.getpostman.com/oauth2/callback
почтальон сгенерировал токен:
{
"aud": "https://analysis.windows.net/powerbi/api",
"iss": "https://sts.windows.net/<id>/",
"iat": 1500464096,
"nbf": 1500464096,
"exp": 1500467996,
"acr": "1",
"aio": <value>,
"amr": [
"pwd"
],
"appid": <app_id>,
"appidacr": "1",
"family_name": "Sunderam",
"given_name": <userName>,
"ipaddr": "23.252.49.99",
"name": <name>,
"oid": <oid_id>,
"platf": "3",
"puid": <puid_id>,
"scp": "Content.Create Dashboard.Read.All Data.Alter_Any Dataset.Read.All Dataset.ReadWrite.All Group.Read Group.Read.All Metadata.View_Any Report.Read.All Report.ReadWrite.All",
"sub": <sub_id>,
"tid": <tid_id>,
"unique_name": <user_email>,
"upn": <user_email>,
"ver": "1.0",
"wids": [
<wid_id>
]
}
токен adal.js
{
"aud": <aud_id>,
"iss": "https://sts.windows.net/<id>/",
"iat": 1501037728,
"nbf": 1501037728,
"exp": 1501041628,
"aio": <aio_id>",
"amr": [
"pwd"
],
"family_name": <name>,
"given_name": <name>,
"ipaddr": "23.252.49.99",
"name": ,"name"
"nonce": "b21969c3-ae73-4928-bcd0-e9c501f791e4",
"oid": <oid_id>,
"platf": "5",
"sub": <sub_id>,
"tid": <tid_id>,
"unique_name": <user_email>,
"upn": <user_email>,
"ver": "1.0"
}
Обратите внимание, что у токена почтальона есть scp, appid и wids.
Любой совет оценен, спасибо, Дерек
scp
. - person Fei Xue - MSFT   schedule 24.07.2017scp
заявки. Вы получили токен из запроса или получили токен только из локального хранилища? - person Fei Xue - MSFT   schedule 26.07.2017