无法使用Kerberos

时间:2017-02-24 18:06:17

标签: apache-storm

我启动了Storm UI(版本1.0.2)并使用Kerberos运行,它似乎可以工作。日志表明它已成功通过身份验证,并且没有例外。现在我想从本地机器连接到UI。我已经阅读了所有可以找到的文档,例如https://github.com/apache/storm/blob/1.0.x-branch/SECURITY.md

据我了解,我需要设置这样的属性,最重要的部分是规则。我相信它正在做的是建立一个映射,说明"无论客户端在MYREALM中验证哪个主体,在UI本身将其映射到myUser"

ui.filter: "org.apache.hadoop.security.authentication.server.AuthenticationFilter"
ui.filter.params:
  "type": "kerberos"
  "kerberos.principal": "KRB principal that the UI connects as"
  "kerberos.keytab": "path to that user's keytab"
  "kerberos.name.rules": "RULE:[2:$1@$0](.*@MYREALM)s/.*/myUser/"

然后在我的客户端,我运行以下

kinit -kt <keytab> <same kerberos principal that the UI connects as>
curl -i --negotiate -u:myUser -b ~/cookiejar.txt -c ~/cookiejar.txt http://<ui hostname>:8080/api/v1/cluster/summary

无论我放入-u,我都会得到401.这是我不明白的地方:

  1. 如果我运行kinit,我现在已经验证为某个Kerberos主体。然后我跑了卷曲。 为什么我必须给curl一个用户ID?它应该是什么?在上面的过滤器中,我已经告诉它我发送的任何主要内容应该映射到myUser,所以不应该工作?
  2. 也许问题是myUser。我不知道如何在Storm UI配置中告诉我myUser是我想要的本地用户
  3. 一旦curl工作,那么我只需要在浏览器中做同样的事情。

    我觉得我好像错过了所有这些部分如何融合在一起的东西。我对Kerberos也很陌生,所以很可能我也搞砸了。

0 个答案:

没有答案