/// <summary> /// Create key vault service client /// </summary> /// <param name="config">Keyvault configuration.</param> /// <param name="provider"></param> /// <param name="certificates"></param> /// <param name="factory"></param> public KeyVaultServiceClient(ICertificateRepository certificates, ICertificateFactory factory, IKeyVaultConfig config, Auth.ITokenProvider provider) : this(certificates, factory, config, new KeyVaultClient(async(_, resource, scope) => { var token = await provider.GetTokenForAsync( resource, scope.YieldReturn()); return(token.RawToken); })) { }
/// <summary> /// Create key vault service client /// </summary> /// <param name="config">Keyvault configuration.</param> /// <param name="client"></param> /// <param name="certificates"></param> /// <param name="factory"></param> public KeyVaultServiceClient(ICertificateRepository certificates, ICertificateFactory factory, IKeyVaultConfig config, IKeyVaultClient client) { if (config == null) { throw new ArgumentNullException(nameof(config)); } _vaultBaseUrl = config.KeyVaultBaseUrl; _keyStoreIsHsm = config.KeyVaultIsHsm; _factory = factory ?? throw new ArgumentNullException(nameof(factory)); _certificates = certificates ?? throw new ArgumentNullException(nameof(certificates)); _keyVaultClient = client ?? throw new ArgumentNullException(nameof(client)); }
/// <summary> /// Create key vault service client /// </summary> /// <param name="config">Keyvault configuration.</param> /// <param name="serializer"></param> /// <param name="certificates"></param> /// <param name="factory"></param> /// <param name="provider"></param> public KeyVaultServiceClient(ICertificateRepository certificates, ICertificateFactory factory, IKeyVaultConfig config, IJsonSerializer serializer, ITokenProvider provider) : this(certificates, factory, config, serializer, new KeyVaultClient(async(_, resource, scope) => { if (resource != "https://vault.azure.net") { // Tunnels the resource through to the provider scope = resource + "/" + scope; } var token = await provider.GetTokenForAsync( Resource.KeyVault, scope.YieldReturn()); return(token.RawToken); })) { if (provider?.Supports(Resource.KeyVault) != true) { throw new ArgumentNullException(nameof(provider)); } }