【问题标题】:Does Azure.Identity library (e.g. DefaultAzureCredential) support token cache?Azure.Identity 库(例如 DefaultAzureCredential)是否支持令牌缓存?
【发布时间】:2021-07-07 12:50:58
【问题描述】:

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

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

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

【问题讨论】:

    标签: .net azure authentication azure-active-directory azure-identity


    【解决方案1】:

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

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

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

    【讨论】:

    • 你能看看我的回答吗?我是否提供了错误的答案?请告诉我。谢谢。
    • 共享令牌缓存正在使用磁盘上的文件,这些文件由例如视觉工作室。它是一种缓存?但是使用它仍然会导致每次访问磁盘。也不保证用户可以使用共享令牌缓存。
    • 也就是说,如果我使用环境变量,我不会使用这个SharedTokenCache,对吧?我连续打了几个电话,并且返回了完全相同的令牌,所以那里似乎有什么东西,但我真的不知道它是真正的令牌缓存还是有什么东西在引诱我
    • 没错。环境变量在 DefaultAzureCredential 中具有优先级。
    • Hmm.. 我查看了source code,似乎内部使用了一个 MSAL 实例。默认情况下,它有一个内存缓存,这意味着您可以获得缓存。我的答案可能过于宽泛,并且基于我将它与托管身份一起使用的经验(它绝对不会缓存在内存中)。将更新答案。
    猜你喜欢
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    相关资源
    最近更新 更多