我需要对具有不同领域的两个不同 HDFS 集群进行身份验证。但是当我实例化另一个 UGI 对象时,只有一个工作正常,它给出了错误
UserGroupInformation.setConfiguration(conf);
UserGroupInformation.loginUserFromKeytab(Principal , keytab path);
当我有单个服务主体名称时它工作正常
但是当我有多个 SPN 具有不同的领域时,它会给出一个错误
我的用户 1 和用户 2 属于不同的领域
SPN1 - “hdfs/user1@ALICE.ABC.COM” SPN2 - “hdfs/user2@BOB.ABC.COM”
原因:javax.security.auth.login.LoginException:java.lang.IllegalArgumentException:非法主体名称 org.apache.hadoop.security.authentication.util.KerberosName$NoMatchingRule:未应用规则
但是在这两种情况下都有默认规则
我还在本文档中听说过 Multiple UGI https://bryanbende.com/development/2016/03/20/learning-kerberos-and-ugi
使用多个 UGI
UserGroupInformation.loginUserFromKeytabAndReturnUGI(user, keytab);
但它也给出了同样的错误我如何实现这些