ElasticSearch用Java代码调用时设置用户名和密码
@Configuration
public class ElasticSearchConfig {
// 注释的这个是不需要账号密码的版本
// @Bean
// public ElasticsearchClient elasticsearchClient(){
// RestClient client = RestClient.builder(new HttpHost("localhost", 9200,"http")).build();
// ElasticsearchTransport transport = new RestClientTransport(client,new JacksonJsonpMapper());
// return new ElasticsearchClient(transport);
// }
@Bean
public ElasticsearchClient elasticsearchClient() throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
//设置用户名密码
new UsernamePasswordCredentials("elastic", "B-enPvkS_y+LeYCQxg4O"));
// 创建 SSL 上下文
SSLContextBuilder sslBuilder = SSLContexts.custom().loadTrustMaterial(null, (chain, authType) -> true);
final SSLContext sslContext = sslBuilder.build();
RestClientBuilder builder = RestClient.builder(new HttpHost("192.168.0.212", 9200, "https"))
.setHttpClientConfigCallback(httpClientBuilder ->
httpClientBuilder
.setDefaultCredentialsProvider(credentialsProvider)
.setSSLContext(sslContext)
.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE));
RestClient client = builder.build();
ElasticsearchTransport transport = new RestClientTransport(client, new JacksonJsonpMapper());
return new ElasticsearchClient(transport);
}
}
CredentialsProvider 名词解释
在编程和网络安全领域,CredentialsProvider 是一个常用的术语,特别是在需要处理身份验证和授权时。这个术语通常指的是一个软件组件或一个接口,它的作用是管理和提供用户凭据(如用户名和密码)给需要它们的服务或应用程序。
在不同的编程环境和框架中,CredentialsProvider 的具体实现可能会有所不同,但其基本目的和功能通常是相似的。以下是一些关于 CredentialsProvider 的关键点:
- 存储和管理凭据:CredentialsProvider 负责安全地存储和管理用户的凭据。这可能包括加密存储、凭据的检索、更新和删除。
- 提供凭据:当应用程序或服务需要用户凭据来进行身份验证时,CredentialsProvider 负责提供这些信息。这通常是通过一个接口或方法调用来完成的。
- 抽象和封装:CredentialsProvider 通过提供一个统一的接口来封装凭据的管理细节,使得开发者可以不必关注存储和保护凭据的具体细节,从而简化了代码和提高了安全性。
- 支持多种认证方法:在一些复杂的应用中,CredentialsProvider 可能需要支持多种类型的认证机制,如基本认证、OAuth、令牌认证等。
- 安全性:由于涉及敏感数据,CredentialsProvider 的实现必须高度关注安全性,确保凭据不被未经授权的访问和泄露。
在不同的编程语言和框架中,如Java、.NET、Python等,你会发现各自实现的 CredentialsProvider,它们的具体API和使用方式可能会有所不同,但其核心功能是相似的。