AADSTS65001:用户或管理员未同意使用ID为“ [应用程序ID]”的应用程序

时间:2020-02-26 17:10:15

标签: asp.net-mvc azure-active-directory powerbi

我试图将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);

除了applicationIdworkspaceIdreportIds之外,我还在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/" />

我还缺少什么呢?

1 个答案:

答案 0 :(得分:1)

当您在应用程序权限中授予管理员同意时,请确保您正在使用具有租户admin / global admin凭据的帐户。

如果您按照上述说明访问API,请尝试从应用程序注册中删除API权限,然后重新添加。确保已公开API,并添加了默认范围。

出现此错误时,您是否曾经输入过用户名和密码?进行错误隔离可能值得尝试。

如果您已经具有正确的帐户权限,则可能需要尝试其他操作。您可以转到“用户设置”,然后单击“管理最终用户如何启动和查看其应用程序”。

enter image description here

您将能够特别更改企业应用程序的设置。

删除应用程序,如果您是全局管理员,请确保登录一次(或要求全局管理员登录一次)

如果上面的设置还可以,请尝试以下技巧:此解决方案仅适用于企业应用程序: 全局管理员只需要浏览到Azure AD,删除该应用程序,然后登录到该应用程序。对于某些应用程序而言,至关重要的是,第一个登录的人是全局管理员,以使他们能够首先授予管理员权限。

此外,如果这是偶然的多租户应用程序,则该资源很可能发现用户需要提供更多的同意或需要进行条件访问,并且抛出该错误。

似乎很多事情都可能引发此错误...此讨论也可能有用:https://github.com/Azure-Samples/active-directory-angularjs-singlepageapp-dotnet-webapi/issues/19