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

Azure:ServiceClientCredentials是否过期?能否复用该凭据实例?

Azure ServiceClientCredentials 有效期与复用问题

问题描述

使用以下代码获取Azure账户/订阅的ServiceClientCredentials实例:

var credentials = await ApplicationTokenProvider.LoginSilentAsync(_tenantId, _clientId, _clientSecret);

存在以下疑问:

  • 这些凭据是否会过期?有没有办法知晓其有效期时长?
  • 能否在内存中暂存该实例,在其“有效”期间重复使用?是否可行?

解答

1. 凭据过期情况与有效期查询

这类通过客户端密钥获取的ServiceClientCredentials是会过期的,默认Azure AD颁发的访问令牌有效期为1小时(3600秒),这个时长可以在Azure AD应用注册中调整(最长不超过24小时)。

要查看具体的有效期,可将凭据转换为TokenCredentials类型,读取令牌的过期时间:

if (credentials is TokenCredentials tokenCreds)
{
    DateTimeOffset expirationTime = tokenCreds.Token.ExpiresOn;
    TimeSpan remainingValidTime = expirationTime - DateTimeOffset.UtcNow;
    // remainingValidTime 即为当前剩余有效时长
}

2. 凭据的暂存与复用

完全可以在内存中暂存该实例并重复使用,只要凭据处于有效期内,就无需每次操作前都调用LoginSilentAsync。这样做能减少对Azure AD的请求量,提升程序性能。

需要注意:

  • 要处理凭据过期的场景:当检测到凭据即将过期或已过期时,重新调用LoginSilentAsync获取新凭据替换旧的。
  • 如果是多线程环境,要保证凭据更新时的线程安全,避免出现多线程同时刷新或使用过期凭据的问题。

内容的提问来源于stack exchange,提问作者Pure.Krome

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:53:18