不知道如何将签名提供程序转换为.net 7



我正在转换到。net 7,并且有一个我没有编写的签名提供程序

using System;
using System.Threading.Tasks;
using Microsoft.Azure.KeyVault;
using Microsoft.Azure.KeyVault.Models;
using Microsoft.IdentityModel.Clients.ActiveDirectory;

public class AzureKeyVaultSigningProvider : ISigningProvider
{
private readonly KeyVaultConnectionString _connectionString;
public AzureKeyVaultSigningProvider(string connectionString)
{
_connectionString = new KeyVaultConnectionString(connectionString);
_connectionString.Validate();
}
private KeyVaultClient GetClient()
{
var keyVaultClient = new KeyVaultClient(GetTokenAsync);
return keyVaultClient;
}
private async Task<string> GetTokenAsync(string authority, string resource, string scope)
{
var authContext = new AuthenticationContext(authority);
var clientCred = new ClientCredential(
_connectionString.ClientId,
_connectionString.ClientSecret
);
var result = await authContext.AcquireTokenAsync(resource, clientCred);
if (result == null)
{
throw new InvalidOperationException("Failed to obtain the KeyVault JWT token");
}
return result.AccessToken;
}
public byte[] SignHash(byte[] bytes)
{
var client = GetClient();
var signedBytes = SignAsync(client, bytes)
.GetAwaiter()
.GetResult();
return signedBytes.Result;
}
public async Task<KeyOperationResult> SignAsync(KeyVaultClient client, byte[] bytes)
{
KeyOperationResult result;
if (_connectionString.HasKeyName)
{
result = await client.SignAsync(
_connectionString.Url,
_connectionString.KeyName,
_connectionString.KeyVersion,
_connectionString.Algorithm,
bytes
);
}
else
{
result = await client.SignAsync(
_connectionString.Url,
_connectionString.Algorithm,
bytes
);
}
return result;
}
}

有谁能帮我把它移植到。net 7吗?

我知道KeyVaultClient已被替换为SecretClient,但在SecretClient上没有有效的构造函数,它相当于GetTokenAsync

澄清一下,你的问题不是关于"转换到。net ";但是你想知道的是如何迁移到最新的nuget包Azure.Security.KeyVault.Keys

在GitHub上有一个完整的客户端示例。

最新更新