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

升级Microsoft Graph API依赖后,IAuthenticationProvider替代方案咨询

升级Microsoft Graph依赖后构建认证提供者及GraphServiceClient方案

在新版本依赖(microsoft-graph-core 3.1.17、msal4j 1.17.0、microsoft-graph 6.14.0)中,原IAuthenticationProvider接口已被移除,替换为AuthenticationProvider接口,以下是两种常见场景的实现方式:

1. 传入已有Token构建认证提供者

如果已有合法的Bearer Token,可通过BaseBearerTokenAuthenticationProvider快速构建认证提供者,核心是提供一个能获取token的Supplier<String>:

import com.microsoft.graph.authentication.BaseBearerTokenAuthenticationProvider;
import com.microsoft.graph.requests.GraphServiceClient;
import okhttp3.OkHttpClient;
import java.util.function.Supplier;

// 假设已有合法的Bearer Token
String existingToken = "your-valid-bearer-token";

// 定义token提供者,如需动态刷新token,可在此实现刷新逻辑
Supplier<String> tokenSupplier = () -> existingToken;

// 构建认证提供者
BaseBearerTokenAuthenticationProvider authProvider = new BaseBearerTokenAuthenticationProvider(tokenSupplier);

// 构建GraphServiceClient
GraphServiceClient<OkHttpRequest> graphClient = GraphServiceClient
        .builder()
        .authenticationProvider(authProvider)
        .buildClient();

2. 客户端凭证模式获取认证提供者

如果需要通过客户端ID、租户ID、客户端密钥自动获取并维护token,可使用ClientCredentialAuthenticationProvider(依赖msal4j):

import com.microsoft.graph.authentication.ClientCredentialAuthenticationProvider;
import com.microsoft.graph.requests.GraphServiceClient;
import okhttp3.OkHttpClient;
import java.util.Arrays;
import java.util.List;

// 配置应用参数
String clientId = "your-client-id";
String tenantId = "your-tenant-id";
String clientSecret = "your-client-secret";
List<String> scopes = Arrays.asList("https://graph.microsoft.com/.default");

// 构建客户端凭证认证提供者,内部已封装token的获取与刷新逻辑
ClientCredentialAuthenticationProvider authProvider = new ClientCredentialAuthenticationProvider(
        clientId,
        scopes,
        clientSecret,
        tenantId,
        null // 无需自定义MSAL参数时传null即可
);

// 构建GraphServiceClient
GraphServiceClient<OkHttpRequest> graphClient = GraphServiceClient
        .builder()
        .authenticationProvider(authProvider)
        .buildClient();

注意事项

  • 确保依赖版本匹配,新版本microsoft-graph已整合核心模块,但需保证msal4j版本与要求一致;
  • 若需自定义HTTP请求配置,可在GraphServiceClient.builder()中通过httpClient()方法传入自定义的OkHttpClient实例;
  • ClientCredentialAuthenticationProvider会自动处理token过期刷新,无需手动维护token生命周期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 22:40:54