c# - 获取服务主体对象的访问令牌的正确方法是什么?
问题描述
我有一个在 Azure AD 中注册为服务主体的 API。我正在尝试从客户端应用程序获取访问令牌并将其传递给 API。
作为 HttpClient 请求的一部分,我添加了此代码(来自 Microsoft 文档):
var accessToken = await tokenCredential.GetTokenAsync(
new TokenRequestContext(scopes: new string[] { ResourceId + "/.default" }) { }
);
这有效,但它只能工作 24 小时,此时我必须重新启动应用程序服务才能使其再次工作。我猜这是因为令牌已过期并且尚未检索到新令牌。
我在某处读到,如果使用上述代码,则需要手动处理令牌的过期和缓存。
我应该如何使用 检索这些令牌Azure.Identity
?
解决方案
这原来是服务生命周期问题和 HttpClient 的一个狡猾的实现。切换到 IHttpClientFactory 后,问题现在似乎得到了解决。
推荐阅读
- google-maps - 如何通过 React Native 在谷歌地图中获得星星和评论
- flutter - 将行文本与右角对齐
- python - 无法在 Django 中导入本地模块
- mysql - 即使表没有所有ID,如何在查询中获取所有结果
- java - WebSphere 中 LinkageError 导致的 ServiceConfigurationError
- javascript - 未设置显示 cookie
- r - 如何将chr转换为数字
- javascript - 输入提交字段上的 jQuery 事件
- sql - Golang、database/sql、Postgres - 当您需要结果时,是否正在使用带有 INSERT 错误做法的 QueryRow?
- javascript - 如何更改网页中的文字大小?