如何使用现有的 access_token 字符串创建 KeyVaultClient 实例?

How to create KeyVaultClient instance using existing access_token string?

我已经使用以下代码库实现了 Key Vault 访问令牌生成器:

private async Task<string> GetStaticToken(string authority, string resource)
{
    var authContext = new AuthenticationContext(authority);
    var credential = new ClientCredential(_appSettings.ClientId, _appSettings.ClientSecret);
    AuthenticationResult result = await authContext.AcquireTokenAsync(resource, credential);
    return result.AccessToken;
}

我知道如何将此令牌用于授权 header 并使用 Rest API 调用获取秘密值。但是我们可以在下面的代码库中使用相同的 AccessToken 字符串吗:

var builder = new ConfigurationBuilder();
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));                            
builder.AddAzureKeyVault($"https://{myVaultName}.vault.azure.net/", keyVaultClient, new DefaultKeyVaultSecretManager());
Configuration = builder.Build();

创建 KeyVaultClient 时是否可以 re-use AccessToken 字符串值?如下所示:

var tokenValue = GetStaticToken (authority, resource);
var keyVaultClient = new KeyVaultClient(tokenValue); 

基本上我想立即生成令牌并在任何地方重复使用字符串,即使在我的应用程序范围之外。

注意:我知道令牌会带有过期时间。届时将再次调用 GetToken。

好吧,你可以回调 returns 那个令牌:

var kvClient = new KeyVaultClient((authority, resource, scope) => Task.FromResult(tokenValue));

这只是将获取令牌的调用替换为已完成且其中包含令牌的任务。