【问题标题】:Create new keys and secrets in Azure Key Vault在 Azure Key Vault 中创建新的密钥和机密
【发布时间】:2017-04-24 04:49:41
【问题描述】:

我正在尝试使用 C# API 创建新的密钥/秘密并将它们添加到 Azure Key Vault。我真的找不到任何有用的文档或说明如何做到这一点,我一直在尝试类似

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

这似乎没有任何作用,但这就是我所拥有的一切。

对于钥匙,我知道我可以做到

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

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

【问题讨论】:

  • 您找到这两者之间的确切实际区别了吗?如果是,请帮我举个实际例子。

标签: c# azure azure-keyvault


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    在此处查看 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

    【讨论】:

      【解决方案3】:

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

      az keyvault secret set --vault-name (vaultName) --name (Secretname) --value (actualvalue)

      例如:az keyvault secret set --vault-name "MyVault" --name "FBPassword" --value "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);
      

      【讨论】:

        【解决方案4】:

        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;
            }
        

        【讨论】:

          猜你喜欢
          • 2016-11-11
          • 1970-01-01
          • 1970-01-01
          • 2023-01-26
          • 2021-03-16
          • 2020-12-19
          • 2021-11-30
          • 1970-01-01
          • 2020-02-11
          相关资源
          最近更新 更多