使用 MSAL 进行应用注册时总是收到 AUTHORIZATION_NEEDED

问题描述

在我们的 android 应用程序中,我无法注册该应用程序以进行注册。一切都根据此示例“https://github.com/msintuneappsdk/Taskr-Sample-Intune-Android-App”进行设置,但当我调用 registeraccountForMAM() 时,我仍然总是收到“AUTHORIZATION_NEEDED”错误代码

我将 MSAL 与 Intune SDK 结合使用,并且该应用已注册为多租户。

MAMServiceAuthenticationCallback 中的 Aacquiretoken() 代码

@Override
    public String acquiretoken(@NonNull final String upn,@NonNull final String aadId,@NonNull final String resourceId) {
           final String[] scopes = {resourceId + "/.default"};
            final IAccount account = MSUtil.loadAccounts(MSUtil.getAaid());
            if (account == null) {
                try {
                    throw new MsalUirequiredException(MsalUirequiredException.NO_ACCOUNT_FOUND,"no account found for " + aadId);
                } catch (MsalUirequiredException e) {
                    e.printstacktrace();
                }
            }

            AcquiretokenSilentParameters params =
                    new AcquiretokenSilentParameters.Builder()
                            .forAccount(account)
                            .fromAuthority(account.getAuthority())
                            .withScopes(Arrays.asList(scopes))
                            .build();
            final IAuthenticationResult iAuthenticationResult = mMultipleAccountApp.acquiretokenSilent(params);
            iAuthenticationResult.getAccesstoken();   
 }

这里的acquiretokenSilent()调用总是因为以下错误而对我不利

"com.microsoft.identity.client.exception.MsalUirequiredException: AADSTS65001: 用户管理员未同意使用名为“XXX”的 ID 为“XXX”的应用程序。为此用户和资源发送交互式授权请求。 "

我希望结果是 ENROLLMENT_SUCCEEDED 而不是 AUTHORIZATION_NEEDED。

我也尝试手动请求此网址“https://login.microsoftonline.com/121025c7-d7d0-4cab-a42e-8994b36d1aac/oauth2/authorize?client_id=XXX &response_type=code&redirect_uri=“XXX” &prompt=admin_consent" 与其他文章中的建议一致,但没有运气。

解决方法

没关系,我可以通过授予对管理工具权限的访问权限来解决此问题。