AADSTS65001:用户或管理员不同意使用ID为的应用程序

时间:2020-06-21 05:53:18

标签: java azure api

我正在关注this document,并看到以下问题。

ERROR com.microsoft.aad.msal4j.PublicClientApplication - [Correlation ID: 6ed3f887-f7a7-4201-ba9c-6587d8510ef8] Execution of class com.microsoft.aad.msal4j.AcquireTokenByAuthorizationGrantSupplier failed.
com.microsoft.aad.msal4j.MsalInteractionRequiredException: AADSTS65001: The user or administrator has not consented to use the application with ID 'ab8dd9d6-d79b-454d-9c40-236a74cfe698' named 'AzureTestApp01'. Send an interactive authorization request for this user and resource.
Trace ID: 0eb3ee9e-b1c1-43e8-90b3-2a1a70b71100
Correlation ID: 6ed3f887-f7a7-4201-ba9c-6587d8510ef8
Timestamp: 2020-06-19 22:32:40Z

我已按照以下步骤操作:

  1. 将应用注册为公共客户端
  2. 更新了清单以将allowPublicClient属性设置为true
  3. 设置User.Read权限
  4. 还获得了授予/撤消管理员的同意

我已经推荐了多篇文章来解决这个问题;但没有一个成功。任何指针都会有所帮助。这是我正在使用的代码:

PublicClientApplication pca = PublicClientApplication.builder(APP_ID).authority(AUTHORITY).build();
String scopes = "User.Read";
UserNamePasswordParameters parameters = UserNamePasswordParameters.builder(Collections.singleton(scopes),userName,password.toCharArray()).build();
IAuthenticationResult result = pca.acquireToken(parameters).get();

1 个答案:

答案 0 :(得分:0)

首先,您需要成为租户的管理员(如果您不是租户管理员,则无法授予管理员权限),则可以按照here流程设置用户角色。

然后按照以下过程授予管理员对该应用程序的同意:

  1. 以租户管理员身份登录https://portal.azure.com
  2. 在以下位置打开您的应用程序注册。
  3. 进入设置,然后进入所需的权限。
  4. 按下授予权限按钮。

enter image description here

根据您的问题,我使用了ROPC flow 测试来获取访问令牌。

enter image description here

解析令牌以查看user.read的范围。 enter image description here

最后,要获取用户信息,请访问https://graph.microsoft.com/v1.0/me Api。 enter image description here