我正在编写一个使用Microsoft Graph API的服务。要检索访问令牌,我已完成以下操作:
然后使用ADAL4J lib检索访问令牌
// clientId = AppPrincipalId created in step#1
Future<AuthenticationResult> future = context.acquireToken(
"https://graph.windows.net", clientId, username, password,
null);
我收到以下错误,我的方法无效?
com.microsoft.aad.adal4j.AuthenticationException:{“error”:“invalid_grant”,“error_description”:“AADSTS65001:用户或管理员未同意使用ID为'XXXX'的应用程序。发送交互式授权请求此用户和资源。\ r \ nTrace ID:
答案 0 :(得分:0)
您需要访问azure portal并添加访问应用程序中的图形的权限。执行此操作的选项将位于页面底部&#34;委派权限&#34;。
答案 1 :(得分:0)
发现这是我的问题...我应该使用clientId(appPrincipalId和client_secret(创建SP时使用的密码)并使用以下调用来检索access_token。
String authority = String.format("https://login.windows.net/%s",getTenantContextId());
context = new AuthenticationContext(authority, false, service);
ClientCredential clientCredential = new ClientCredential(getAppPrincipalId(),getSymmetricKey());
Future future = context.acquireToken("https://graph.windows.net", clientCredential, null);