首页 > 解决方案 > Azure.Identity 库(例如 DefaultAzureCredential)是否支持令牌缓存?

问题描述

我还没有找到有关Azure.Identity库是否缓存令牌的任何详细信息。我想知道它是否正确缓存每个范围的令牌并在到期前更新它,或者我必须自己编写这个功能。

也欢迎任何指向正确文档的指针。

图书馆里有一个SharedTokenCacheCredential,但我相信它是别的东西。出于性能原因,我正在询问内存缓存 - 每次都不会获得新令牌。

标签: .netazureauthenticationazure-active-directoryazure-identity

解决方案


它可能具有缓存,具体取决于使用的凭据。例如,环境变量 credential 可以构建例如 a ClientSecretCredential,它在内部使用 MSAL 的实例ConfidentialClientApplication(请参阅源代码)。MSAL 有一个用于令牌的内存缓存,因此可以正常工作。

根据我的经验,托管身份凭证不会缓存令牌,但 MI 端点会缓存。每次需要令牌时调用该 HTTP 端点仍然不完全可扩展,因此在使用托管身份时,内存缓存是一个好主意,它将令牌缓存到到期前 4-5 分钟(不多)。

Azure SDK 本身在其 HTTP 管道中具有令牌缓存功能,因此在技术上不需要凭据来进行缓存。


推荐阅读