AADSTS65001: Пользователь или администратор не дал согласие на использование приложения с идентификатором «[Идентификатор приложения]» - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь встроить отчеты power bi в мое приложение ASP. NET MVC. В AAD я предоставил права администратора всем API Power BI и Graph API (в частности, разрешения пользователя), но я продолжаю получать ту же ошибку при попытке аутентификации. Я установил для allowPublicClient значение true в manifest.

Ниже приведена часть кода, но ошибки в части 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/" />

Что еще мне не хватает, что мне все еще нужно?

1 Ответ

1 голос
/ 27 февраля 2020

Убедитесь, что вы используете учетную запись с учетными данными администратора / глобального администратора клиента, когда вы предоставляете согласие администратора в разрешениях приложения.

Если вы получаете доступ к API, как вы сказали, попробуйте удалить разрешения API из регистрации приложения и повторно добавить их. Убедитесь, что API открыт и добавлена ​​область по умолчанию.

Вы когда-нибудь вводили имя пользователя и пароль, когда получили эту ошибку? Возможно, стоит попробовать изолировать ошибки.

Если у вас уже есть необходимые права доступа к учетной записи, возможно, вам нужно попробовать еще кое-что. Вы можете go в Настройки пользователя и нажать «Управление тем, как конечные пользователи запускают и просматривать свои приложения».

enter image description here

Вы сможете изменить в частности, настройки для корпоративных приложений.

Удалите приложение и обязательно войдите в систему один раз, если вы являетесь глобальным администратором (или попросите глобального администратора войти один раз)

Если Настройки выше были в порядке, попробуйте этот трюк: Это решение применимо только к корпоративным приложениям: глобальный администратор просто должен перейти к Azure AD, удалить приложение, а затем войти в приложение. В некоторых приложениях важно, чтобы первым, кто вошел в систему, был глобальный администратор, чтобы в первую очередь он мог дать разрешение администратора.

Кроме того, если это случайно мультитенантное приложение Возможно, ресурс обнаружил, что пользователь должен предоставить больше согласия или должен сделать условный доступ, и он выдает эту ошибку.

Кажется, что многое может вызвать эту ошибку ... Это обсуждение также может быть полезным: https://github.com/Azure-Samples/active-directory-angularjs-singlepageapp-dotnet-webapi/issues/19

...