java spring 启动的 Kerberos 身份验证部署在 tomcat

Kerberos authentication for java spring boot deployed in tomcat

我在 tomcat (v8) 中部署了 spring 启动 war(微服务)。微服务端点在 API 网关中作为 API 公开。

微服务会调用底层HBase数据源获取数据集,调用HBase前需要kerberos认证。

我的问题是:我们是否需要从微服务代码中显式处理以启用此 kerberos 身份验证?或者将 jass.conf 放在部署微服务 war 的 tomcat conf 目录中就足够了吗? jass.conf 配置如下: https://examples.javacodegeeks.com/enterprise-java/tomcat/apache-tomcat-kerberos-authentication-tutorial/

我的jass.conf文件内容:

com.sun.security.jgss.initiate {
com.sun.security.auth.module.Krb5LoginModule required
principal=”HTTP/MYDOMAIN.COM” useKeyTab=true
keyTab=”/opt/tomcat_server/tomcat_server/tomcat/conf/krb5.keytab”
doNotPrompt=true storeKey=true debug=true;
};

com.sun.security.jgss.accept {
com.sun.security.auth.module.Krb5LoginModule required
principal=”HTTP/MYDOMAIN.COM” useKeyTab=true
keyTab=”/opt/tomcat_server/tomcat_server/tomcat/conf/krb5.keytab”
doNotPrompt=true storeKey=true debug=true;
};

当我将我的 jass.conf 放入 tomcat/conf 目录而不对微服务代码进行任何更改时,tomcat 出现以下错误:

INFO  org.apache.zookeeper.ClientCnxn- Opening socket connection to server 
<server name>. Will not attempt to authenticate using SASL (unknown error)

我采用了使用服务帐户处理 kerberos 身份验证的方法,并在应用程序 (java) 代码中处理了相同的方法。此外,为有效的 kerberos 票证为该服务帐户创建了一个密钥表。