hadoop - 将 SPNEGO 凭证转发到安全集群

标签 hadoop kerberos spnego spring-security-kerberos

我有一个受 Kerberos 保护的集群,并且有一个 REST API 需要代表用户与集群进行交互。我已经将 Spring Security 与 SPNEGO 结合使用来对用户进行身份验证,但是当我尝试使用 Hadoop SDK 时,根据我的尝试,由于各种原因它失败了。

当我尝试在用户登录后直接使用 SDK 时,它给我 SIMPLE authentication is not enabled

我注意到 session 的 AuthenticatorUserNamePasswordAuthenticationToken,这没有意义,因为我正在使用用户的凭据对 Kerberos 领域进行身份验证。

我正在尝试使用我自己的服务帐户和 key 表开箱即用的项目:https://github.com/spring-projects/spring-security-kerberos/tree/master/spring-security-kerberos-samples/sec-server-spnego-form-auth

最佳答案

就其值(value)而言,您可以利用 Apache Knox (http://knox.apache.org) 在安全集群中使用 Hadoop REST API。 Knox 将为您处理 SPNEGO 与各种组件的协商。您可以使用基于 HTTP header 的预授权 SSO 提供商将最终用户的身份传播到 Knox。

详情:http://knox.apache.org/books/knox-0-8-0/user-guide.html#Preauthenticated+SSO+Provider

但是,如果您使用该提供商,则需要确保只有受信任的客户才能调用您的服务。

或者,您可以使用默认的 Shiro 提供商使用用户名/密码对 LDAP 向 Knox 进行身份验证。

以这种方式使用 Knox 的一大好处是,您的服务永远不需要了解集群是否已进行 kerberos 化的任何信息。诺克斯从你那里抽象出来。

关于hadoop - 将 SPNEGO 凭证转发到安全集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35849197/

相关文章:

scala - Source.fromFile 不适用于 HDFS 文件路径

hadoop - 使用 Kerberos 从另一个作业的 java 操作提交 Oozie 作业

windows-authentication - Kerberos:Windows 8.1 上的 kinit 导致空票缓存

kerberos - 我可以向客户端表明支持 SPNEGO 但 NTLM 不适用于 HTTP 请求吗?

java - SPNEGO与Java多次提示密码

java - 具有 ArrayWritable 的 Hadoop MapReduce 链

mongodb - Hbase 数据应该如何才能快速查询响应?

hadoop - 如何为 Avro MapReduce 作业传入多个输入目录

hadoop - 在缓存中找不到 Hdfs 委托(delegate) token - Spark 应用程序出错

PHP - 如何将 Curl 与 Kerberos 一起使用