You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Microsoft Graph Java SDK时Scope配置错误及正确配置咨询

解决AADSTS1002012错误及客户端凭证流的Scope设置问题

首先得理清两个核心问题:

  • 你使用的**ClientSecretCredential(客户端凭证流)**是服务到服务的认证方式,不存在用户上下文,所以根本没法调用graphClient.me()——这个接口是用来获取当前登录用户数据的,客户端凭证流里没有"当前用户",要访问用户数据得换成graphClient.users("{user-id}")指定具体用户ID。
  • 客户端凭证流的Scope必须遵循资源标识符/.default的格式,针对Microsoft Graph来说,正确的Scope就是https://graph.microsoft.com/.default,而openid、offline_access这类属于Delegated权限(是给有用户参与的认证流用的,比如授权码流),不能在客户端凭证流里使用。

正确的Scope配置示例(Java SDK)

List<String> scopes = Arrays.asList("https://graph.microsoft.com/.default");
ClientSecretCredential credential = new ClientSecretCredentialBuilder()
    .clientId("你的客户端ID")
    .clientSecret("你的客户端密钥")
    .tenantId("你的租户ID")
    .build();

GraphServiceClient<Request> graphClient = GraphServiceClient.builder()
    .authenticationProvider(new AzureIdentityAuthenticationProvider(credential))
    .buildClient();

相关官方规则说明

官方明确规定:客户端凭证流仅支持应用权限(Application Permissions),必须用https://graph.microsoft.com/.default作为Scope,这个值会让Azure AD返回应用注册时配置的所有已授权应用权限的令牌。另外,要调用用户相关接口,你得先在Azure AD应用注册里添加对应的应用权限(比如User.Read.All),并完成管理员同意操作。

内容的提问来源于stack exchange,提问作者Ihsan Haikal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 06:45:30