Implemented Basic & ApiKey authentication for elasticsearch

pull/8554/head
Necati Meral 5 years ago
parent b96ddcbe4a
commit 7d07b2ad5e

@ -21,7 +21,25 @@ namespace Volo.Docs.Documents.FullSearch.Elastic
{
var node = new Uri(Configuration["ElasticSearch:Url"]);
var settings = new ConnectionSettings(node).DefaultIndex(Options.IndexName);
Authenticate(settings);
return new ElasticClient(settings);
}
protected virtual void Authenticate(ConnectionSettings connectionSettings)
{
switch (Options.AuthenticationMode)
{
case DocsElasticSearchOptions.ElasticSearchAuthenticationMode.Basic:
var basicAuth = Options.BasicAuthentication;
connectionSettings.BasicAuthentication(basicAuth.Username, basicAuth.Password);
break;
case DocsElasticSearchOptions.ElasticSearchAuthenticationMode.ApiKey:
var apiKeyAuth = Options.ApiKeyAuthentication;
connectionSettings.BasicAuthentication(apiKeyAuth.Id, apiKeyAuth.ApiKey);
break;
}
}
}
}

@ -0,0 +1,8 @@
namespace Volo.Docs.Documents.FullSearch.Elastic
{
public class DocsElasticSearchApiKeyAuthenticationOptions
{
public string Id { get; set; }
public string ApiKey { get; set; }
}
}

@ -0,0 +1,8 @@
namespace Volo.Docs.Documents.FullSearch.Elastic
{
public class DocsElasticSearchBasicAuthenticationOptions
{
public string Username { get; set; }
public string Password { get; set; }
}
}

@ -6,10 +6,23 @@
{
Enable = false;
IndexName = "abp_documents";
AuthenticationMode = ElasticSearchAuthenticationMode.None;
}
public bool Enable { get; set; }
public string IndexName { get; set; }
public ElasticSearchAuthenticationMode AuthenticationMode { get; set; }
public DocsElasticSearchBasicAuthenticationOptions BasicAuthentication { get; set; }
public DocsElasticSearchApiKeyAuthenticationOptions ApiKeyAuthentication { get; set; }
public enum ElasticSearchAuthenticationMode
{
None = 0,
Basic = 1,
ApiKey = 2
}
}
}

Loading…
Cancel
Save