簡體   English   中英

在 Azure Key Vault 上存儲一個長字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM