有人能帮助如何使用IAuthenticationResult(msal4j)的令牌创建图形客户端吗



使用Java中的ADAL库,我创建了令牌(使用客户端凭据提供程序(,生成的令牌是TokenCredentialAuthProvider,属于

IAuthenticationProvider但是,由于我想从ADAL迁移到MSAL,我尝试使用MSAL4j(java((使用客户端凭据提供程序(创建一个令牌,生成的令牌的形式为IAuthenticationResult,我无法使用它来创建Graph客户端,因为它需要IACuthenticationProvider的实例。

如何使用形式为IAuthenticationResult(msal4j(的令牌创建图形客户端

MS Graph客户端的创建需要IAuthenticationProvider的实例。"根据场景选择Microsoft Graph身份验证提供程序"中提供了几个内置提供程序和示例。如果您已经拥有令牌,则可以创建自己的类/实现,并从getAuthorizationTokenAsync方法中返回IAuthenticationResult.getAccessToken((返回的令牌。

例如

// MyAuthenticationProvider.java
package com.example;
import java.net.URL;
import java.util.concurrent.CompletableFuture;
import com.microsoft.graph.authentication.IAuthenticationProvider;
public class MyAuthenticationProvider implements IAuthenticationProvider {
private CompletableFuture<String> accessTokenFuture;
public MyAuthenticationProvider(String accessToken) {
this.accessTokenFuture = new CompletableFuture<>();
this.accessTokenFuture.complete(accessToken);
}
@Override
public CompletableFuture<String> getAuthorizationTokenAsync(URL requestUrl) {
return this.accessTokenFuture;
}
}
// App.java
package com.example;
import com.google.gson.Gson;
import com.microsoft.graph.authentication.IAuthenticationProvider;
import com.microsoft.graph.models.User;
import com.microsoft.graph.requests.GraphServiceClient;
public class App {
public static void main(String[] args) {
String msalAccessToken = args[0];
final IAuthenticationProvider auth = new MyAuthenticationProvider(msalAccessToken);
final GraphServiceClient graphClient = GraphServiceClient
.builder()
.authenticationProvider(auth)
.buildClient();
final User me = graphClient.me().buildRequest().get();
System.out.println(new Gson().toJson(me));
}
}

最新更新