Получить токен доступа для учетных записей федерации Microsoft - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь получить токен доступа для Power BI API. Наш аккаунт является федеративным.

Я пытался сделать это, но он продолжает выдавать ошибку, в которой указано неверное имя пользователя или пароль Чтобы использовать поток предоставления учетных данных пароля владельца ресурса для получения токена доступа для Azure AD, я вызываю http-запрос напрямую, используя HttpClient

HttpClient clie = new HttpClient();
string tokenEndpoint = "https://login.microsoftonline.com/{tenant}/oauth2/token";
var body = "resource=https://analysis.windows.net/powerbi/api&client_id={client_id}&grant_type=password&username={username}&password={password}";
var stringContent = new StringContent(body, Encoding.UTF8, "application/x-www-form-urlencoded");
string result = clie.PostAsync(tokenEndpoint, stringContent).ContinueWith((response) =>
            {
                return response.Result.Content.ReadAsStringAsync().Result;
            }).Result;

Это будет работать для не федеративных учетных записей. Как я могу реализовать то же самое для федеративных учетных записей?

1 Ответ

0 голосов
/ 14 ноября 2018

Легче было бы использовать MSAL.NET (или ADAL.NET), который многое делает для достижения этой цели. Смотри https://aka.ms/msal-net-up

scopes = new string[]{ "https://analysis.windows.net/powerbi/api/Dashboard.Read.All"}
result = await app.AcquireTokenByUsernamePasswordAsync(scopes, "joe@contoso.com",
                                                       securePassword);

Еще лучше, если вы знаете, что ваш компьютер подключен к домену или AAD, вы можете использовать встроенную проверку подлинности Windows: https://aka.ms/msal-net-iwa

result = await app.AcquireTokenByIntegratedWindowsAuthAsync(scopes);

Обратите внимание, что я рекомендую использовать MSAL.NET (вместо ADAM.NET), поскольку в MSAL / NET / конечной точке Azure AD v2.0 PowerBI обеспечивает лучший контроль областей разрешений: enter image description here

См. Вкладку разрешений API в регистрации приложения в https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview

...