.net TokenCredential与AzureServiceTokenProvider的集成
此问题适用于Azure.Core1.1.0.0及更新版本 从这个版本开始,.net TokenCredential与AzureServiceTokenProvider的集成,.net,azure,.net,Azure,此问题适用于Azure.Core1.1.0.0及更新版本 从这个版本开始,TokenCredential是一个抽象类,因此不能再使用旧的构造函数。我想使用AzureServiceTokenProvider(内部调用az cli)的结果来获取用于其他Azure服务的访问令牌(在我的例子中是下载blob)。我已经编写了一个从TokenCredential派生的简单类,它接受生成的令牌并返回一个AccessToken实例,但我不相信SDK中会缺少这个实例,尽管我找不到它 我已经查看了文档中的所有派生类
TokenCredential
是一个抽象类,因此不能再使用旧的构造函数。我想使用AzureServiceTokenProvider
(内部调用az cli)的结果来获取用于其他Azure服务的访问令牌(在我的例子中是下载blob)。我已经编写了一个从TokenCredential派生的简单类,它接受生成的令牌并返回一个AccessToken
实例,但我不相信SDK中会缺少这个实例,尽管我找不到它
我已经查看了文档中的所有派生类,但没有一个提供我想要的,即完全自动获取令牌(假设用户已经登录到az cli或满足某些其他先决条件)
这是我写的课。有没有类似的方法可以实现这一点
public class AzureServiceTokenCredentials : TokenCredential
{
private readonly AccessToken _token;
public AzureServiceTokenCredentials(AppAuthenticationResult result)
{
_token = new AccessToken(result.AccessToken, result.ExpiresOn);
}
public override AccessToken GetToken(TokenRequestContext requestContext, CancellationToken cancellationToken) => _token;
public override ValueTask<AccessToken> GetTokenAsync(TokenRequestContext requestContext, CancellationToken cancellationToken) =>
new ValueTask<AccessToken>(Task.FromResult(_token));
}
公共类AzureServiceTokenCredentials:TokenCredential
{
私有只读访问令牌_令牌;
public AzureServiceTokenCredentials(AppAuthenticationResult)
{
_令牌=新的AccessToken(result.AccessToken,result.ExpiresOn);
}
public override AccessToken GetToken(TokenRequestContext requestContext,CancellationToken CancellationToken)=>\u token;
public override ValueTask GetTokenAsync(TokenRequestContext requestContext,CancellationToken CancellationToken)=>
新的ValueTask(Task.FromResult(_标记));
}
DefaultAzureCredential做你想做的事。@juunas不适合我。EnvironmentCredential-与之不同的是,ManagedEntityCredential-是针对云中虚拟机的MSI,而不是用户,SharedTokenCacheChendential-我对此没有太多发现,但它没有使用az cli中的令牌,或者它不存在,也没有获得新的令牌InteractiveBrowserCredential-interactive,不是我想要的DefaultAzureCredential做你想做的事@juunas不适合我。EnvironmentCredential——与之不同的是ManagedEntityCredential——是针对云上虚拟机的MSI,而不是用户,SharedTokenCacheCredential——我对此并没有太多发现,但它没有使用az cli中的令牌,或者它不存在,也没有获得新的令牌InteractiveBrowserCredential——interactive,这不是我想要的