我有一个受Kerberos保护的群集,并且有一个REST API需要代表用户与群集进行交互。我使用Spring Security和SPNEGO来验证用户,但是当我尝试使用Hadoop SDK时,基于我尝试的各种原因,它失败了。转发SPNEGO凭证以保护群集
当我尝试在用户登录后直接使用SDK时,它会给我SIMPLE authentication is not enabled
。
我注意到会话的Authenticator
是UserNamePasswordAuthenticationToken
这是没有意义的,因为我使用用户凭证对Kerberos领域进行身份验证。
我想用这个项目的开箱即用我自己的服务帐户和密钥表:https://github.com/spring-projects/spring-security-kerberos/tree/master/spring-security-kerberos-samples/sec-server-spnego-form-auth
当使用“Hadoop SDK”时,我想你会创建一个Hadoop的'Configuration'和一个Hadoop'UserGroupInformation'。如何将配置属性以隐式的方式提供给'Configuration'(即,将''core-site.xml'等放在本地目录中,并将该目录添加到CLASSPATH中)*或显式地提供给配置属性?如果是隐式的,你是否检查文件是否被实际读取*(否则Hadoop默默恢复为硬编码的默认值,例如SIMPLE认证,并且你的程序将在随后发生意外的异常消息时崩溃并烧录)*? –
如果还不是这种情况,可以按照https://steveloughran.gitbooks.io/kerberos_and_hadoop/content/sections/secrets.html中的说明提升一些调试标志,例如'-Dsun.security.krb5。debug = true'和'export HADOOP_JAAS_DEBUG = true' –
我正在显式地添加配置文件,但我试图避免使用UGI,因为它全部使用静态成员,而且我需要支持线程安全操作。我可能对于在用户的主体下工作的所有东西都有一个基本的误解,但我希望它能像获得对一个'Subject“的引用并在'Subject内部运行我的HDFS列表等一样简单.doAs' – Benny