从AppAuthentication迁移至Azure.Identity:如何使用Bearer Token?
解决方案
在Azure.Identity中,没有直接对应旧版TokenCredentials的内置类型,但可以通过自定义TokenCredential实现类来传入已有的Bearer Token,具体实现如下:
- 编写自定义TokenCredential类
实现TokenCredential抽象类,重写获取Token的方法,直接返回你持有的Bearer Token:
using Azure.Core; using System; using System.Threading; using System.Threading.Tasks; public class StaticBearerTokenCredential : TokenCredential { private readonly AccessToken _accessToken; public StaticBearerTokenCredential(string bearerToken, DateTimeOffset expiresOn) { _accessToken = new AccessToken(bearerToken, expiresOn); } public override AccessToken GetToken(TokenRequestContext requestContext, CancellationToken cancellationToken) { return _accessToken; } public override ValueTask<AccessToken> GetTokenAsync(TokenRequestContext requestContext, CancellationToken cancellationToken) { return new ValueTask<AccessToken>(_accessToken); } }
- 用自定义凭证初始化SecretClient
将你的Bearer Token和对应过期时间传入自定义类,再用来创建SecretClient实例:
// 替换为实际的Bearer Token和过期时间 var tokenCredential = new StaticBearerTokenCredential(myBearerToken, expiresOn); var secretClient = new SecretClient(new Uri(keyVaultURI), tokenCredential);
关键注意点
- 确保传入的Bearer Token未过期,且拥有访问目标Key Vault的必要权限(如
SecretGet、SecretList等)。 - 若Token过期,需重新生成并创建新的
StaticBearerTokenCredential实例,也可在自定义类中扩展Token刷新逻辑。
内容的提问来源于stack exchange,提问作者shinjidev
相关产品推荐
相关产品推荐

