You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure.Identity 1.11.0:ChainedTokenCredential令牌生成延迟及重试策略配置

解决Azure.Identity ChainedTokenCredential切换凭据延迟问题

你遇到的延迟确实是ManagedIdentityCredential默认的重试策略导致的——它在获取令牌失败后会自动多次重试,直到耗尽重试次数才会让ChainedTokenCredential切换到下一个凭据。要解决这个问题,你可以通过自定义重试策略,禁用或缩短第一个凭据的重试逻辑。

具体实现步骤

  1. 创建自定义重试策略:直接使用内置的无重试策略,或者配置极短的重试规则。
  2. 在实例化ManagedIdentityCredential时传入自定义配置:通过ManagedIdentityCredentialOptions的RetryPolicy属性设置自定义策略。

修改后的代码示例

using Azure.Core;
using Azure.Identity;

private static async Task<string> GetTokenAsync()
{
    // 配置ManagedIdentityCredential的重试策略:禁用所有重试
    var miOptions = new ManagedIdentityCredentialOptions
    {
        RetryPolicy = RetryPolicy.NoRetry()
        // 或者用另一种方式禁用重试:设置最大重试次数为0
        // RetryOptions = new RetryOptions { MaxRetries = 0 }
    };

    AccessToken token =
         new ChainedTokenCredential(
            new ManagedIdentityCredential(clientId: "<client-id>", miOptions), 
            new DefaultAzureCredential())
        .GetToken(
            new TokenRequestContext(
                new[] { "https://storage.azure.com/.default" },
                isCaeEnabled: false
            ));

    return token.Token;
}

补充说明

  • 如果需要更精细的重试控制(比如允许1次快速重试),可以替换RetryPolicy.NoRetry()为自定义配置,例如:
    RetryOptions = new RetryOptions
    {
        MaxRetries = 1,
        Delay = TimeSpan.FromSeconds(1),
        MaxDelay = TimeSpan.FromSeconds(2)
    }
    
  • DefaultAzureCredential内部也包含多个凭据链,若需要调整它的重试逻辑,同样可以通过DefaultAzureCredentialOptions的RetryPolicy或RetryOptions进行配置。

内容的提问来源于stack exchange,提问作者Pulkit Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 15:32:51