azure - 为什么 AzureServiceTokenProvider 返回过期的访问令牌?
问题描述
我正在尝试使用AzureServiceTokenProvider
获取访问令牌来调用自定义服务,但它间歇性地返回过期令牌。我了解 AzureServiceTokenProvider缓存令牌并在过期之前检索一个新令牌,但这是全新调试会话中的全新令牌。示例调试会话:
当前 UTC 时间:3/6/2021 5:57:16 AM
但是返回的token已经过期了??2021 年 3 月 6 日上午 5:27:40 UTC
我在本地和部署到 Azure 时都会出现这种行为,但它是断断续续的。
- 在撰写本文时,我正在使用最新
Microsoft.Azure.Services.AppAuthentication 1.6.1
的。 - 我正在关注https://docs.microsoft.com/en-us/dotnet/api/overview/azure/service-to-service-authentication#running-the-application-using-managed-identity-or-user-使用 Visual Studio 在本地进行调试时,使用我的 Azure 帐户(对自定义服务具有 API 权限)来获取具有 Azure 中托管标识的令牌。
更新:根据https://github.com/Azure/azure-sdk-for-net/issues/16718的建议,我还尝试了将 forceRefresh 设置为 true 的 GetAuthenticationResultAsync ,但仍然获得了具有相同 3/6/ 的过期令牌2021 年上午 5:27:40 日期。
解决方案
很难说是什么问题。最好的猜测是获取新令牌的调用失败,因此返回缓存的令牌。
但是,正如您问题中的链接所述,此方法是传统方法,不再推荐。
因此,您可以通过切换到 Azure 身份客户端库https://docs.microsoft.com/en-us/dotnet/api/overview/azure/identity-readme “解决”问题
推荐阅读
- java - 根据元素类型从集合中获取元素
- node.js - node.js fs.createWriteStream 创建文件,但无法正确写入
- reactjs - @import - 将 scss 文件放入另一个 scss 文件时出现意外标记
- python - 结合每两行的熊猫操作
- javascript - Tealium Javascript 代码扩展如何返回一个变量
- javascript - 如何使用 ReplaceWith 并将结果放入输入
- mongodb - 项目索引数组mongodb
- java - 删除所有出现的字符“。” 来自Java中的字符串
- node.js - Nest.js 中的优雅环境处理
- git - github 中的代码审查和拉取请求工作流程