博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
solr集成kerberos认证
阅读量:4089 次
发布时间:2019-05-25

本文共 3093 字,大约阅读时间需要 10 分钟。

1. 软件版本

  

2. kerberos

2.1. 添加solr用户

  在kdc中为solr添加主体并生成用于验证HTTP请求的keytab文件,为每个要运行solr的主机创建一个keytab文件,并将主体名称与主机一起使用:

root@kdc:/# kadmin.localkadmin.local: addprinc -randkey HTTP/
@EXAMPLE.COMkadmin.local: ktadd -k /tmp/solr.keytab HTTP/
@EXAMPLE.COMkadmin.local: quit

  注:

    addprinc -randkey HTTP/\${HOST1}@EXAMPLE.COM,将${HOST1}替换为实际的主机名。

    上述操作需要每个solr节点都重复一遍,为每台solr节点创建kerberos HTTP用户主体,并生成/tmp/solr.keytab文件,最后复制到solr节点的/keytabs/solr.keytab路径。

2.2. zookeeper配置(如果已配置kerberos则跳过)

  zookeeper管理solrcloud集群中的节点通信,它必须要与集群各节点中认证。配置要求为zookeeper设置服务principal,定义JAAS配置文件。

  第一步是在zookeeper的conf目录创建java.env文件,并且添加如下内容:

export JVMFLAGS="-Djava.security.auth.login.config=/etc/zookeeper/conf/jaas-client.conf"

  JAAS配置文件应该包含下面的参数,确保改变principal和keytab的路径。jaas-client.conf配置内容如下:

Server { com.sun.security.auth.module.Krb5LoginModule required  useKeyTab=true  keyTab="/keytabs/zkhost1.keytab"  storeKey=true  doNotPrompt=true  useTicketCache=false  debug=true  principal="zookeeper/host1@EXAMPLE.COM";};

  最后,在zookeeper配置文件zoo.cfg添加如下内容:

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProviderjaasLoginRenew=3600000

  启动zookeeper的时候,需要指定JAAS配置文件,如下:

bin/zkServer.sh start -Djava.security.auth.login.config=/etc/zookeeper/conf/jaas-client.conf

2.3. 创建security.json

  在solrcloud模式中,设置solr通过上传security.json到zookeeper来使用kerberos插件

server/scripts/cloud-scripts/zkcli.sh -zkhost localhost:2181 -cmd put /security.json '{"authentication":{"class":"org.apache.solr.security.KerberosPlugin"}}'

  如果你使用solr的standalone模式,需要创建security.json文件,然后放置在$SOLR_HOME目录下方。

2.4. 创建jaas文件

  JAAS配置文件定义认证属性使用,例如服务principal和keytab路径。在下面的例子中,我们创建JAAS配置文件/home/foo/jaas-client.conf。当我们启动solr的时候,我们将会使用该名字和路径。确保使用正确principal和keytab文件路径。

Client {    com.sun.security.auth.module.Krb5LoginModule required    useKeyTab=true    keyTab="/keytabs/solr.keytab"    storeKey=true    useTicketCache=true    debug=true    principal="HTTP/192.168.0.107@EXAMPLE.COM";};

2.5. 在solr.in.sh中添加以下内容

  当启动solr的时候,需要配置solr的start命令中属性参数,示例如下:

SOLR_AUTH_TYPE="kerberos"SOLR_AUTHENTICATION_OPTS="-Djava.security.auth.login.config=/home/foo/jaas-client.conf -Dsolr.kerberos.cookie.domain=192.168.0.107 -Dsolr.kerberos.cookie.portaware=true -Dsolr.kerberos.principal=HTTP/192.168.0.107@EXAMPLE.COM -Dsolr.kerberos.keytab=/keytabs/solr.keytab"

2.6. 启动solr

bin/solr -c -z server1:2181,server2:2181,server3:2181/solr

2.7. 测试配置

  第一步执行如下命令:

kinit user@EXAMPLE.COM

  第二步执行如下命令,curl,会得到成功的反应:

curl --negotiate -u : "http://192.168.0.107:8983/solr/"

3. solrJ的认证

   在solrJ应用中使用kerberos认证,需要在创建solr客户端之前执行下面两步:

System.setProperty("java.security.auth.login.config", "/home/foo/jaas-client.conf");HttpClientUtil.setConfigurer(new Krb5HttpClientConfigurer());

  你需要为JAAS客户端配置jaas-client.conf指定kerberos服务principal和keytab,如下:

SolrJClient {    com.sun.security.auth.module.Krb5LoginModule required    useKeyTab=true    keyTab="/keytabs/foo.keytab"    storeKey=true    useTicketCache=true    debug=true    principal="foo@EXAMPLE.COM";};

4. 参考资料

https://solr.apache.org/guide/8_8/kerberos-authentication-plugin.html

转载地址:http://qkcii.baihongyu.com/

你可能感兴趣的文章
缓存篇-Redisson的使用
查看>>
phpquery抓取网站内容简单介绍
查看>>
找工作准备的方向(4月22日写的)
查看>>
关于fwrite写入文件后打开查看是乱码的问题
查看>>
用结构体指针前必须要用malloc,不然会出现段错误
查看>>
Linux系统中的美
查看>>
一些实战项目(linux应用层编程,多线程编程,网络编程)
查看>>
原来k8s docker是用go语言写的,和现在所讲的go是一个东西!
查看>>
STM32CubeMX 真的不要太好用
查看>>
STM32CubeMX介绍、下载与安装
查看>>
不要买铝合金机架的无人机,不耐摔,易变形弯曲。
查看>>
ACfly也是基于FreeRTOS的
查看>>
我发现七月在线的GAAS课程基本都讲到了
查看>>
电机堵转
查看>>
carzepony也在想往FreeRTOS上迁移
查看>>
可以买个好点的电烙铁
查看>>
ACfly调参记录(包括ACfly-F330和ACfly-T265)
查看>>
一定记得每飞几次或者隔一天要把螺丝和浆帽拧一次,确实会松的
查看>>
《多旋翼无人飞行器嵌入式飞控开发指南》里基于FreeRTOS的无人机软件框架
查看>>
思岚A1的SDK其实很好读懂,每个函数清晰明了,可以直接调用
查看>>