C#:在Azure Key Vault中创建新密钥和机密

时间:2016-12-08 20:13:37

标签: c# azure azure-keyvault

我正在尝试创建新的密钥/机密,并使用C#API将它们添加到Azure Key Vault。我无法找到有关如何执行此操作的任何有用文档或说明,我一直在尝试类似

的内容
keyVaultClient.SetSecretAsync("myKeyVaultUrl", "My test secret", "12345");

似乎什么也没做,但那就是我所拥有的一切。

对于按键,我看到我可以做

KeyBundle keyBundle = await keyVaultClient.CreateKeyAsync("myKeyVaultUrl", "My Test Key", "RSA");

但同样,我不知道如何处理这个密钥包。

4 个答案:

答案 0 :(得分:1)

此示例应用程序包含可能对您的旅程有所帮助的代码:
https://www.microsoft.com/en-us/download/details.aspx?id=45343

您还可以使用RESTAzure CliPowerShell管理Azure Key Vault。我相信这是推荐的方式。

答案 1 :(得分:0)

请在此处查看Microsoft示例代码:https://github.com/Azure-Samples/key-vault-dotnet-authentication

具体来说,KeyVaultAuthSample.cs的第80行创建了一个新的Secret并将其推送到Azure:https://github.com/Azure-Samples/key-vault-dotnet-authentication/blob/master/KeyVaultAuthSample.cs#L80

要将密钥包推送到Azure,请查看方法KeyVaultClient.ImportKeyAsync:https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.keyvault.keyvaultclientextensions.importkeyasync

答案 2 :(得分:0)

您可以使用CLI像这样创建它:

az keyvault秘密集--vault-name(vaultName)--name(Secretname)--value(actualvalue)

例如:az keyvault秘密集--vault-name“ MyVault” --name“ FBPassword”-值“ 123”

在此处查看更多信息:  https://docs.microsoft.com/en-us/azure/azure-app-configuration/cli-samples

在代码中,这是方法签名:

public static Task<SecretBundle> SetSecretAsync(this IKeyVaultClient operations, string vaultBaseUrl, string secretName, string value, IDictionary<string, string> tags = null, string contentType = null, SecretAttributes secretAttributes = null, CancellationToken cancellationToken = default);

在代码中,您可以: 首先设置这些,然后

contentType = null; 
SecretAttributes secretAttributes = null;
CancellationToken cancellationToken = default;

SecretBundle secretBundle = await _keyVaultClient.SetSecretAsync(("myKeyVaultUrl", "My test secret", "12345", null, null, cancellationToken);

答案 3 :(得分:0)

VaultClient.ImportKeyAsync在指定的Key-Vault中创建一个新密钥。

    public static void Import()
    {
        KeyVaultClient vaultClient = new KeyVaultClient(GetAccessToken);

        RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(2048);

        var keyBundle = Task.Run(() => vaultClient.ImportKeyAsync("<YOUR BASE VAULT ID>", "ImportedKey", new KeyBundle(new JsonWebKey(rsaProvider, true)), true)).
           ConfigureAwait(false).GetAwaiter().GetResult();
     }

    public static async Task<string> GetAccessToken(string authority, string resource, string scope)
    {
        string AppId = "<YOUR APP ID GUID>";
        string AppSecret = "<YOUR APP SECRET>";

        var authContext = new AuthenticationContext(authority);
        ClientCredential clientCred = new ClientCredential(AppId, AppSecret);
        AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientCred);

        if (result == null)
            throw new InvalidOperationException("Failed to obtain the JWT token");

        return result.AccessToken;
    }

enter image description here