コード例 #1
0
        public void DeletedSecretIdentifierTest()
        {
            string baseId      = string.Format("{0}/deletedsecrets/{1}", vault, name);
            string versionedId = string.Format("{0}/{1}", baseId, version);

            // unversioned
            var id = new DeletedSecretIdentifier(baseId);

            Assert.Equal(baseId, id.BaseIdentifier);
            Assert.Equal(baseId, id.Identifier);
            Assert.Equal(vault, id.Vault);
            Assert.Equal(name, id.Name);
            Assert.Equal(string.Empty, id.Version);
            Assert.True(DeletedSecretIdentifier.IsDeletedSecretIdentifier(baseId));

            // versioned
            id = new DeletedSecretIdentifier(versionedId);
            Assert.Equal(baseId, id.BaseIdentifier);
            Assert.Equal(baseId, id.Identifier);
            Assert.Equal(vault, id.Vault);
            Assert.Equal(name, id.Name);
            Assert.Equal(string.Empty, id.Version);
            Assert.True(DeletedSecretIdentifier.IsDeletedSecretIdentifier(versionedId));
        }
コード例 #2
0
        private async Task MigrationGuide()
        {
            #region Snippet:Microsoft_Azure_KeyVault_Snippets_MigrationGuide_Create
            AzureServiceTokenProvider provider = new AzureServiceTokenProvider();
            KeyVaultClient            client   = new KeyVaultClient(
                new KeyVaultClient.AuthenticationCallback(provider.KeyVaultTokenCallback));
            #endregion Snippet:Microsoft_Azure_KeyVault_Snippets_MigrationGuide_Create

            #region Snippet:Microsoft_Azure_KeyVault_Snippets_MigrationGuide_CreateWithOptions
            using (HttpClient httpClient = new HttpClient())
            {
                //@@AzureServiceTokenProvider provider = new AzureServiceTokenProvider();
                /*@@*/ provider = new AzureServiceTokenProvider();
                //@@KeyVaultClient client = new KeyVaultClient(
                /*@@*/ client = new KeyVaultClient(
                    new KeyVaultClient.AuthenticationCallback(provider.KeyVaultTokenCallback),
                    httpClient);
            }
            #endregion Snippet:Microsoft_Azure_KeyVault_Snippets_MigrationGuide_CreateWithOptions

            {
                #region Snippet:Microsoft_Azure_KeyVault_Snippets_MigrationGuide_SetSecret
                SecretBundle secret = await client.SetSecretAsync("https://myvault.vault.azure.net", "secret-name", "secret-value");

                #endregion Snippet:Microsoft_Azure_KeyVault_Snippets_MigrationGuide_SetSecret
            }

            {
                #region Snippet:Microsoft_Azure_KeyVault_Snippets_MigrationGuide_GetSecret
                // Get the latest secret value.
                SecretBundle secret = await client.GetSecretAsync("https://myvault.vault.azure.net", "secret-name", null);

                // Get a specific secret value.
                SecretBundle secretVersion = await client.GetSecretAsync("https://myvault.vault.azure.net", "secret-name", "e43af03a7cbc47d4a4e9f11540186048");

                #endregion Snippet:Microsoft_Azure_KeyVault_Snippets_MigrationGuide_GetSecret
            }

            {
                #region Snippet:Microsoft_Azure_KeyVault_Snippets_MigrationGuide_ListSecrets
                IPage <SecretItem> page = await client.GetSecretsAsync("https://myvault.vault.azure.net");

                foreach (SecretItem item in page)
                {
                    SecretIdentifier secretId = item.Identifier;
                    SecretBundle     secret   = await client.GetSecretAsync(secretId.Vault, secretId.Name);
                }

                while (page.NextPageLink != null)
                {
                    page = await client.GetSecretsNextAsync(page.NextPageLink);

                    foreach (SecretItem item in page)
                    {
                        SecretIdentifier secretId = item.Identifier;
                        SecretBundle     secret   = await client.GetSecretAsync(secretId.Vault, secretId.Name);
                    }
                }
                #endregion Snippet:Microsoft_Azure_KeyVault_Snippets_MigrationGuide_ListSecrets
            }

            {
                #region Snippet:Microsoft_Azure_KeyVault_Snippets_MigrationGuide_DeleteSecret
                // Delete the secret.
                DeletedSecretBundle deletedSecret = await client.DeleteSecretAsync("https://myvault.vault.azure.net", "secret-name");

                // Purge or recover the deleted secret if soft delete is enabled.
                if (deletedSecret.RecoveryId != null)
                {
                    DeletedSecretIdentifier deletedSecretId = deletedSecret.RecoveryIdentifier;

                    // Deleting a secret does not happen immediately. Wait a while and check if the deleted secret exists.
                    while (true)
                    {
                        try
                        {
                            await client.GetDeletedSecretAsync(deletedSecretId.Vault, deletedSecretId.Name);

                            // Finally deleted.
                            break;
                        }
                        catch (KeyVaultErrorException ex) when(ex.Response.StatusCode == HttpStatusCode.NotFound)
                        {
                            // Not yet deleted...
                        }
                    }

                    // Purge the deleted secret.
                    await client.PurgeDeletedSecretAsync(deletedSecretId.Vault, deletedSecretId.Name);

                    // You can also recover the deleted secret using RecoverDeletedSecretAsync.
                }
                #endregion Snippet:Microsoft_Azure_KeyVault_Snippets_MigrationGuide_DeleteSecret
            }
        }