public async Task <string> GetValueAsync(string context, string key)
        {
            var ctx = ConvertJsonToContext(context);

            key = key ?? throw new SecureStoreException();
            var passwordKey = key.GetExistingMetadata();

            return(await ExecuteAzureKeyVaultOperation(
                       async() =>
            {
                IAzureKeyVaultClient keyVaultClient = _clientFactory.CreateClient(ctx);
                return await keyVaultClient.GetSecretAsync(passwordKey.VaultSecretName);
            },
                       "get"));
        }
        public async Task <Credential> GetCredentialsAsync(string context, string key)
        {
            var ctx = ConvertJsonToContext(context);

            key = key ?? throw new SecureStoreException();
            var passwordKey = key.GetExistingMetadata();

            var secret = await ExecuteAzureKeyVaultOperation(
                async() =>
            {
                IAzureKeyVaultClient keyVaultClient = _clientFactory.CreateClient(ctx);
                return(await keyVaultClient.GetSecretAsync(passwordKey.VaultSecretName));
            },
                "get");

            return(JsonConvert.DeserializeObject <Credential>(secret));
        }
        public async Task <string> CreateValueAsync(string context, string key, string value)
        {
            var ctx = ConvertJsonToContext(context);

            // key is null for new secret
            value = value ?? throw new ArgumentNullException(nameof(value));
            var passwordKey = key.GetWriteMetadata(null);

            await ExecuteAzureKeyVaultOperation(
                async() =>
            {
                IAzureKeyVaultClient keyVaultClient = _clientFactory.CreateClient(ctx);
                return(await keyVaultClient.SetSecretAsync(passwordKey.VaultSecretName, value));
            },
                "set");

            return(JsonConvert.SerializeObject(passwordKey));
        }
        public async Task <string> UpdateCredentialsAsync(string context, string key, string oldAugumentedKey, Credential value)
        {
            var ctx = ConvertJsonToContext(context);

            key = key ?? throw new ArgumentNullException(nameof(key));
            oldAugumentedKey = oldAugumentedKey ?? throw new ArgumentNullException(nameof(oldAugumentedKey));
            value            = value ?? throw new ArgumentNullException(nameof(value));
            var serializedCredential = JsonConvert.SerializeObject(value);

            var passwordKey = key.GetWriteMetadata(oldAugumentedKey);

            await ExecuteAzureKeyVaultOperation(
                async() =>
            {
                IAzureKeyVaultClient keyVaultClient = _clientFactory.CreateClient(ctx);
                return(await keyVaultClient.SetSecretAsync(passwordKey.VaultSecretName, serializedCredential));
            },
                "set");

            return(JsonConvert.SerializeObject(passwordKey));
        }
        public async Task RemoveValueAsync(string context, string key)
        {
            var ctx = ConvertJsonToContext(context);

            key = key ?? throw new ArgumentNullException(nameof(key));
            var passwordKey = key.GetExistingMetadata();

            try
            {
                await ExecuteAzureKeyVaultOperation(
                    async() =>
                {
                    IAzureKeyVaultClient keyVaultClient = _clientFactory.CreateClient(ctx);
                    await keyVaultClient.DeleteSecretAsync(passwordKey.VaultSecretName);
                },
                    "delete");
            }
            catch (SecureStoreException sse) when(sse.ErrorType == SecureStoreException.Type.SecretNotFound)
            {
                // Ignore SecretNotFound
            }
        }
Ejemplo n.º 6
0
 public SourceSystemConnectorService(IUnitOfWork unitOfWork, IAzureKeyVaultClient azureKeyVaultClient, IMetadataUtilityService metadataUtility)
 {
     _unitOfWork          = unitOfWork;
     _azureKeyVaultClient = azureKeyVaultClient;
     _metadataUtility     = metadataUtility;
 }
Ejemplo n.º 7
0
 public SecretController(IAzureKeyVaultClient kvOperator)
 {
     _kvOperator = kvOperator;
 }