.net - 访问令牌过期时 GraphServiceClient 会发生什么?
问题描述
这是代码。我获得了一个访问令牌,并使用该访问令牌创建了一个客户端。如果访问令牌过期会怎样?我需要创建另一个客户端吗?只创建一个客户端?或者每次我需要用户时,我应该调用 GetGraphServiceClient()?这将解决令牌因需要新令牌而过期的事实。如果不是,我如何验证令牌是否已过期?
public async Task<GraphServiceClient> GetGraphServiceClient()
{
var token = await GetAccessToken();
var client = new GraphServiceClient(new DelegateAuthenticationProvider(
(requestMessage) =>
{
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
return Task.FromResult(0);
}));
return client;
}
private async Task<string> GetAccessToken()
{
var app = ConfidentialClientApplicationBuilder.Create(_connectionData.ClientId)
.WithAuthority(AzureCloudInstance.AzurePublic, _connectionData.TenantId)
.WithClientSecret(_connectionData.ClientSecret)
.Build();
AuthenticationResult result = null;
try
{
result = await app.AcquireTokenForClient(scopes)
.ExecuteAsync();
}
catch (MsalServiceException ex)
{
// Case when ex.Message contains: invalid scope
}
return result?.AccessToken;
}
解决方案
推荐阅读
- hadoop - HiveAccessControlException 权限被拒绝:用户 [hive] 在 [hdfs://sandbox-....:8020/user/..] 上没有 [ALL] 权限(状态=42000,代码=40000)
- wso2 - WSO2IS 5.3.0 - 联合 SAML 和启用身份验证请求签名
- java - Jersey 在启动时失败并出现以下堆栈跟踪。我在 Cent Os 7.9 上,在 Tomcat 9 上运行 openjdk 8
- android - 从 https://dl.google.com/ 在 macos 上下载失败的原因可能是什么
- batch-file - 批处理文件过滤 ping 结果并附加 .csv
- c - 使用 DT_FILTER 隐藏 DSO 中的符号
- r - 当列表是动态的时,在列表中查找变量的特定项目
- cassandra - cassandra 购物车数据建模讲解
- python - 如何在每一行中添加制表符?
- sql-server - SQL Server - 映射表以识别要汇总的字段