如何缓存和刷新托管身份令牌

how to cache and refresh managed identity token

我正在使用 Azure 托管身份,下面的代码生成所需的令牌来验证 api。我正在使用 <PackageReference Include="Azure.Identity" Version="1.4.0" />

var credential = new ManagedIdentityCredential();
            var accessToken = await credential.GetTokenAsync(new Azure.Core.TokenRequestContext(new[] {"my_scope"}));
            return accessToken.Token;

现在,在每个 api 调用中,我都调用上述方法来获取令牌。问题是缓存此令牌并自动刷新的方法是什么?这是内置的东西吗?

不幸的是,Azure 身份库中没有内置缓存,可用于今天可用的 ManagedIdentityCredential。缓存在其他 SDK(例如 Azure 存储、KeyVault 等)调用 getToken 时实现。

但是,您可能需要评估您的代码 运行 所在应用程序 service/Functions/VM 的托管身份端点中已经存在的令牌缓存是否足以满足您的目的。 它是一个本地端点,因此延迟可能会满足您的需求,即使代码中的本地缓存肯定会更快。您可能还想评估您的代码发出令牌请求的频率,因为我听说如果您在一秒钟内收到太多请求,托管身份端点可能会限制这些请求。