我正在尝试获取Power BI API的访问令牌。我们的帐户是联盟帐户。
我一直在尝试这种方法,但是它一直给我一个错误,提示用户名或密码不正确。为了使用资源所有者密码凭据授予流来获取Azure AD的访问令牌,我使用HttpClient直接调用http请求
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;
这将适用于非联合帐户。如何为联盟帐户实现相同的功能?
答案 0 :(得分:0)
比较容易的是利用MSAL.NET(或ADAL.NET)来达到此目的。参见https://aka.ms/msal-net-up
ContainerRequestContext
更好的是,如果您知道您的计算机已加入域或AAD,则可以使用集成Windows身份验证:https://aka.ms/msal-net-iwa
scopes = new string[]{ "https://analysis.windows.net/powerbi/api/Dashboard.Read.All"}
result = await app.AcquireTokenByUsernamePasswordAsync(scopes, "joe@contoso.com",
securePassword);
请注意,我建议使用MSAL.NET(而不是ADAM.NET),因为通过MSAL / NET / Azure AD v2.0终结点,PowerBI可以更好地控制权限范围:
在https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview的应用程序注册中查看“ API权限”标签