我试图将power bi报表嵌入到我的ASP.NET MVC应用程序中,在AAD
中,我已授予所有Power BI API和Graph API管理员权限(特别是用户权限),但我一直在尝试进行身份验证时出现相同的错误。我也在allowPublicClient
中将manifest
设置为true。
下面是代码的一部分,但是authenticationResult
部分上的错误:
private static readonly string Username = ConfigurationManager.AppSettings["pbiUsername"];
private static readonly string Password = ConfigurationManager.AppSettings["pbiPassword"];
private static readonly string AuthorityUrl = ConfigurationManager.AppSettings["authorityUrl"];
private static readonly string ResourceUrl = ConfigurationManager.AppSettings["resourceUrl"];
private static readonly string ApplicationId = ConfigurationManager.AppSettings["applicationId"];
private static readonly string ApiUrl = ConfigurationManager.AppSettings["apiUrl"];
private static readonly string WorkspaceId = ConfigurationManager.AppSettings["workspaceId"];
private static readonly string ReportId = ConfigurationManager.AppSettings["reportId"];
private static readonly string ReportId2 = ConfigurationManager.AppSettings["reportId2"];
var result = new EmbedConfig();
try
{
result = new EmbedConfig { Username = username, Roles = roles };
var error = GetWebConfigErrors();
if (error != null)
{
result.ErrorMessage = error;
return View(result);
}
// Create a user password cradentials.
var credential = new UserPasswordCredential(Username, Password);
// Authenticate using created credentials
var authenticationContext = new AuthenticationContext(AuthorityUrl);
var authenticationResult = await authenticationContext.AcquireTokenAsync(ResourceUrl, ApplicationId, credential);
除了applicationId
,workspaceId
和reportIds
之外,我还在web.config
中使用以下内容:
<add key="authorityUrl" value="https://login.windows.net/common/oauth2/authorize/" />
<add key="resourceUrl" value="https://analysis.windows.net/powerbi/api" />
<add key="apiUrl" value="https://api.powerbi.com/" />
我还缺少什么呢?
答案 0 :(得分:1)
当您在应用程序权限中授予管理员同意时,请确保您正在使用具有租户admin / global admin凭据的帐户。
如果您按照上述说明访问API,请尝试从应用程序注册中删除API权限,然后重新添加。确保已公开API,并添加了默认范围。
出现此错误时,您是否曾经输入过用户名和密码?进行错误隔离可能值得尝试。
如果您已经具有正确的帐户权限,则可能需要尝试其他操作。您可以转到“用户设置”,然后单击“管理最终用户如何启动和查看其应用程序”。
您将能够特别更改企业应用程序的设置。
删除应用程序,如果您是全局管理员,请确保登录一次(或要求全局管理员登录一次)
如果上面的设置还可以,请尝试以下技巧:此解决方案仅适用于企业应用程序: 全局管理员只需要浏览到Azure AD,删除该应用程序,然后登录到该应用程序。对于某些应用程序而言,至关重要的是,第一个登录的人是全局管理员,以使他们能够首先授予管理员权限。
此外,如果这是偶然的多租户应用程序,则该资源很可能发现用户需要提供更多的同意或需要进行条件访问,并且抛出该错误。
似乎很多事情都可能引发此错误...此讨论也可能有用:https://github.com/Azure-Samples/active-directory-angularjs-singlepageapp-dotnet-webapi/issues/19