c# - AcquireTokenForClient (MSAL) 是否使用令牌缓存?
问题描述
我(成功地)使用带有 MSAL 的客户端凭据流来验证这样的应用程序:
private static async Task<AuthenticationResult> getAuthResultNonInteractively()
{
string[] scopes = {"api://xxx/.default"};
IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.CreateWithApplicationOptions(
new ConfidentialClientApplicationOptions
{
TenantId = "xxx",
ClientId = "xxx",
RedirectUri = "http://localhost",
ClientSecret = "xxx"
})
.Build();
// Desired behaviour: acquires token online only if token does not
// exist in cache or is expired
AuthenticationResult authResult = await app.AcquireTokenForClient(scopes)
.ExecuteAsync();
return authResult;
}
是否调用AcquireTokenForClient
first 尝试在令牌缓存中查找令牌,并且仅当缓存中不存在令牌或令牌已过期时才在线获取它?还是它总是在线获取令牌?如果后者是真的,我需要改变什么才能获得所需的行为?
解决方案
AppTokenCache
使用的 by与AcquireTokenForClient
您的特定实例相关联IConfidentialClientApplication
,因此为了利用令牌缓存,您IConfidentialClientApplication
需要长期存在(即单例)。
推荐阅读
- node.js - 我的css样式没有出现,nodejs,express,hbs
- java - 使用 Java servlet 超过限制尝试登录
- mongodb - 传入的参数必须是12字节的单个String或24个十六进制字符的字符串,Mongoose ObjectId err
- python - 将列表中的项目传递给python中的sql查询
- python - 将多个数据框导出到多个工作簿
- r - 我将如何计算 R 中多个单元格之间的距离?
- snowflake-cloud-data-platform - - 从雪花中卸载数据 - 每行到一个单独的文件
- r - 并排散点图
- java - 2020 年之后的 Crystal Reports Viewer Flash 支持
- terraform - terraform 取消引用 for_each 中的提供程序别名