Azure Key Vault持续抛出TokenExpired错误(S2S12086)求助
解决Azure Key Vault令牌过期(S2S12086)导致的未授权错误
升级依赖包
你当前使用的@azure/identity@2.0.4和@azure/keyvault-secrets@4.3.0版本较旧,存在令牌自动刷新的已知问题。建议直接升级到最新稳定版:@azure/identity至少升级到v3.x及以上版本@azure/keyvault-secrets同步升级到匹配的兼容版本(如v4.7.x及以上)
执行升级命令:
npm update @azure/identity @azure/keyvault-secrets禁用自定义令牌缓存逻辑
检查代码里有没有手动缓存令牌的自定义代码,官方SDK会自动处理令牌的获取、缓存和过期刷新,手动干预很容易导致过期令牌被重复使用。正确的客户端初始化示例:const { DefaultAzureCredential } = require("@azure/identity"); const { SecretClient } = require("@azure/keyvault-secrets"); // 初始化凭据和密钥客户端,无需手动处理令牌 const credential = new DefaultAzureCredential(); const secretClient = new SecretClient("https://your-keyvault-name.vault.azure.net/", credential);验证托管标识权限
确认Web应用的托管标识(系统分配或用户分配)在Key Vault的访问策略中拥有get、list等必要权限,且权限没有被意外撤销或设置了过短的有效期。调整凭据配置
如果升级后仍有问题,可以在初始化DefaultAzureCredential时开启令牌缓存持久化,确保令牌能正确刷新:const credential = new DefaultAzureCredential({ tokenCachePersistenceOptions: { enabled: true } });排查环境配置
检查Web应用的应用设置里,AZURE_TENANT_ID、AZURE_CLIENT_ID等环境变量是否配置正确,这些变量错误会导致凭据获取失败。同时查看应用服务的日志(如Kudu或Application Insights),获取令牌获取过程的详细错误信息。
内容的提问来源于stack exchange,提问作者keerthi
相关产品推荐
相关产品推荐

