我在tomcat(v8(中部署了一个春季启动战争(微服务(。微服务终结点在 API 网关中作为 API 公开。
微服务将调用基础 HBase 数据源来检索数据集,并且在调用 HBase 之前需要 kerberos 身份验证。
我的问题是:我们是否需要从微服务代码中显式处理以启用此 kerberos 身份验证? 或者将 jass.conf 放在部署微服务战争的 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 dir 中而没有对微服务代码进行任何更改时,在 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 票证的密钥表。