[英]Store a long string on Azure Key Vault
我正在嘗試使用以下代碼將配置保存為 Azure Vault 上的 JSON 字符串:
public async Task SetSecretValueAsync(string vault, string keyName, string secretName, string value,
CancellationToken cancellationToken = default)
{
if(string.IsNullOrEmpty(value) || string.IsNullOrEmpty(keyName))
{
return;
}
var cred = new ManagedIdentityCredential(_managedId);
var vaultUri = new Uri($"https://{vault}.vault.azure.net/");
var keyClient = new KeyClient(vaultUri, cred);
var key = (await keyClient.GetKeyAsync(keyName, cancellationToken: cancellationToken).ConfigureAwait(
false)).Value;
var cryptoClient = new CryptographyClient(key.Id, cred);
var valueBytes = Encoding.UTF8.GetBytes(value);
var encryptResult = await cryptoClient.EncryptAsync(EncryptionAlgorithm.RsaOaep, valueBytes, cancellationToken)
.ConfigureAwait(false);
var base64Value = Convert.ToBase64String(encryptResult.Ciphertext);
var client = new SecretClient(vaultUri, cred);
await client.SetSecretAsync(secretName, base64Value, cancellationToken).ConfigureAwait(false);
}
我以為秘密值的最大長度是 25KB,但是當我嘗試 go 超過 255 個字符時,它給了我一個例外。 有沒有辦法設置超過 255 個字符的值? 看起來很短。
我認為您遇到的問題與您要存儲的秘密的大小無關。 很可能是CryptographyClient
調用失敗了,您永遠無法訪問SecretClient
調用。
var encryptResult = await cryptoClient.EncryptAsync(EncryptionAlgorithm.RsaOaep, valueBytes, cancellationToken)
.ConfigureAwait(false);
我認為 KeyVault 只支持加密長度最多為 255 個字符的字符串,盡管我找不到確認它的來源。 這可能是由於所使用的底層加密算法的限制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.