我创建了一个扩展DriverManagerDataSource的SecureImpalaDataSource类,并使用< code > user group information . doas()用keytab文件连接到impala。但是我得到的错误如下:
java.sql.SQLException:[Simba]ImpalaJDBCDriver为身份验证初始化或创建传输时出错:[Simba]ImpalaJDBCDriver无法连接到服务器:null。
但是当我在一个测试演示中获得与kerberos票证缓存的连接时,我成功了。有人能帮我吗?
验证jdbc连接的一种方法是使用ugi.doAs。以下是示例代码:
// 1. login use keytab
System.setProperty("java.security.krb5.realm", "XXX.COM");
System.setProperty("java.security.krb5.kdc", "kdcXXX");
Configuration conf = new Configuration();
conf.set("hadoop.security.authentication", "Kerberos");
UserGroupInformation.setConfiguration(conf);
UserGroupInformation ugi = UserGroupInformation.loginUserFromKeytabAndReturnUGI("test", "test.keytab");
// 2. create impala jdbc connection
Class.forName(JDBCDriverName);
conn = (Connection) ugi.doAs(new PrivilegedExceptionAction<Object>() {
public Object run() {
Connection tcon = null;
try {
tcon = DriverManager.getConnection(connectionUrl);
} catch (SQLException e) {
e.printStackTrace();
}
return tcon;
}
});
// 3. execute query using conn
......
结果是我的URL中的HOST和FQDN不一致。
忘记Hadoop UGI:一个JDBC驱动程序只需要原始的JAAS配置就可以动态创建一个Kerberos票证(提高< code>useKeyTab并降低< code>useTicketCache)。
系统属性
示例JAAS配置文件,Impala/Hive Cloudera驱动程序< br >此处使用Java风格的符号表示Windows路径。
Client {
com.sun.security.auth.module.Krb5LoginModule
required
useTicketCache=false
doNotPrompt=true
useKeyTab=true
keyTab="file:C:/blah/blah/dummy.keytab"
principal="dummy@SOME.REALM"
debug=false;
};
示例JAAS conf文件,Apache Hive驱动程序< br >只需将节名从< code>Client改为< code > com . sun . security . jgss . krb5 . initiate < br > PS:可以在同一个conf文件中填充多个节;这意味着您可以定义一个“全局”配置,并将其用于多种工具
调试
sun.security.krb5.debug
=连接到kerberized hadoop环境时错误:[Simba]ImpalaJdbcDriver无法连接到服务器:[Simba]ImpalaJdbcDriver Kerberos身份验证失败。 我已经在virtualbox中安装了cloudera quickstart vm,启用了kerberos,编写了连接到imapala db的java代码,并得到了kerberos身份验证失败的错误。 我已
可以使用jdbc和Kerberos委托从我的java应用程序连接到SAP HANA DB吗? 现在,我可以创建与 SAP HANA DB 的 jdbc 连接,而无需输入数据库登录名和密码,仅使用 Windows 登录名。为此,我在 SAP HANA 管理控制台 (user1@domain_name) 中为 db 用户设置 Kerberos 外部 ID,并在创建 jdbc 连接时使用属性“Nativ
我们所面临的问题已在许多文件中得到充分证明https://stackoverflow.com/questions/34189756/warning-about-ssl-connection-when-connecting-to-mysql-database. 从过渡到时,我们就开始面临这个问题。建议的修复方法对我们有效,但我们有一个问题,我们不想更新Java源文件以进行更改,例如从 到 正如在ht
我正在尝试使用JDBC连接到托管在云中的MongoDB。但是,认证失败。 以下是我的Java代码: 当我执行时,我得到以下异常: 我能够通过mLab web界面以相同的用户id和密码成功登录,并且工作正常。 但是,只有JDBC尝试失败。 有人能帮忙吗,这里有什么问题?
keytab和principl似乎都是正确的。我可以成功运行命令 有谁能进一步帮我。我被这个问题困扰了将近一个星期。如果需要,我可以提供更多的信息。
高层目标是将NIFI连接到Oracle db服务--但只能使用Kerberos进行身份验证。 我们正在运行Apache NIFI1.9.2,并试图通过DBCPConnectionPool控制器服务连接到Oracle(使用驱动程序版本12.1)。我配置了一个KeytabCredentialService控制器服务,并在我的DBCP控制器服务中引用它。 我将Oracle驱动程序类名设置为“Oracle