kibana中配置为使用spnego的缺陷令牌

toe95027  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(515)

环境:
centos 7号
活动目录
elasticsearch和kibana 7.9.3
es中配置的领域:kerberos和ad
kerberos授权域:ad
es群集在主节点和数据节点上使用键选项卡进行设置。我能跑 curl --negotiate -u : https://master-fqdn:9200/_security/_authenticate?pretty aginst所有节点,并从ad获得一个描述用户和组的json。我可以在任何windows或linux主机上执行此操作,其中我有一个kerberos会话。
kibana是用

xpack.security.authc.providers:
  kerberos.kerberos1:
    order: 0
    description: "Log in with kerberos"

kibana服务器已在kerberos域中注册(所有计算机都已注册)。时间同步和反向查找正在工作。
使用firefox时(设置后) network.negotiate-auth.trusted-uris 在about:config)在linux和windows上,它都发送 Authorization: Negotiate 头部带有spnego数据,就像curl一样。但我得到了 GSSException: Defective token detected. GSSHeader did not find the right tag 在es日志和未经kibana授权的401。在kibana日志里

SPNEGO is supported by the backend
Re-initiating SPNEGO handshake
Authentication attempt failed: Unauthorized

我已经用jvm命令行选项为es激活了krb5和spnego debug。当我跑的时候 curl --negotiate 我在日志中看到很多kerberos输出,但是当kibana reuqest失败时,它是无声的。我只在es日志中看到gssexception堆栈跟踪。在我看来,它在尝试提取spnego令牌时很早就失败了?
这不是ntlm(当您看到“有缺陷的令牌”时的常见错误),因为我在上得到了相同的错误firefox@linux 这个记号看起来和我用curl得到的很像。
是否可以将原始http请求记录到es中?把从Kibana到埃斯的交通挤到一起可不容易。我想应该发生的是,Kibana向前 Authorization 标题到es。
还有其他调试步骤吗?

4ktjp1zp

4ktjp1zp1#

解决了。
您需要使用kibana主机(http)的fqdn向主节点kerberos id添加spn/kibana-fqdn@realm).
或者可以在kibana服务器上安装es协调节点。
这两种方法都实现了相同的目标:es节点需要接受为http创建的spnego令牌/kibana-fqdn@realm.
elastic将修复文档:https://github.com/elastic/kibana/issues/67089

相关问题