用于后端应用程序的MSAL.net或Graph SDK



我正在创建一个在后台运行的后端服务,而无需直接的用户交互。它是用.NET 4.8编写的,并作为windows服务运行。该应用程序将与Graph API的几个端点(/users和/groups(交互,这意味着创建我自己的HttpClient很容易,因为调用的端点数量有限。应用程序应基于客户端机密从Azure获取访问令牌。我一直在使用ConfidentialClientApplicationBuilder,并使用Microsoft.Identity.Client命名空间的AcquireTokenForClient(?

private async Task<string> AcquireAccessTokenAsync()
{
try
{
var app = ConfidentialClientApplicationBuilder.Create("MyClientId")
.WithClientSecret("MyClientSecret")
.WithAuthority(new Uri("MyAuthority"))
.Build();
var acquireResult = await app.AcquireTokenForClient("RequiredScopes").ExecuteAsync();
return acquireResult.AccessToken;
}
catch (MsalClientException ex)
{
Console.WriteLine(ex);
throw new ApplicationException("Failed to acquire access token from Azure.");
}
}

对于这个任务来说,使用Graph SDK(Graph Client(有点过头了,这就是为什么我尝试使用MSAL.NET库的原因。但是,在构建需要集成到Microsoft Graph的后端服务时,应该使用什么样的库呢?它如何支持令牌刷新机制?

在调查了客户端SDK的further并执行了一些测试后,SDK似乎会通过缓存在内部处理缓存中是否有活动的有效令牌,否则会发出新的令牌请求。没有用于没有用户交互的应用程序服务的客户端凭据流的刷新令牌。

最新更新