Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用keytab文件连接到Impala的jdbc URL_Java_Hibernate_Jdbc_Cloudera_Impala - Fatal编程技术网

Java 使用keytab文件连接到Impala的jdbc URL

Java 使用keytab文件连接到Impala的jdbc URL,java,hibernate,jdbc,cloudera,impala,Java,Hibernate,Jdbc,Cloudera,Impala,我正在尝试使用keytab文件连接到Impala,但没有找到与keytab连接的确切URL。我已经看过了,但它没有提到使用带有主体的keytab文件连接到Impala。使用keytab文件连接到Impala的JDBC URL是什么?如“使用Kerberos”一节所述,Impala JDBC驱动程序支持三种获取Kerberos主题的方法: …驱动程序尝试从当前线程继承的AccessControlContext获取主题。如果AccessControlContext包含 多个主题,驱动程序使用最新的主

我正在尝试使用
keytab
文件连接到
Impala
,但没有找到与keytab连接的确切URL。我已经看过了,但它没有提到使用带有主体的keytab文件连接到Impala。使用keytab文件连接到Impala的JDBC URL是什么?

如“使用Kerberos”一节所述,Impala JDBC驱动程序支持三种获取Kerberos主题的方法:

  • …驱动程序尝试从当前线程继承的AccessControlContext获取主题。如果AccessControlContext包含 多个主题,驱动程序使用最新的主题
  • 驱动程序检查系统属性的
    java.security.auth.login.config
    JAAS配置。如果使用JAAS配置 指定时,驱动程序将使用该信息创建LoginContext 然后使用与其关联的主题
  • 驱动程序检查KRB5_CONFIG和KRB5CCNAME系统环境变量是否存在Kerberos票证缓存。司机使用这些信息 从缓存中创建LoginContext,然后使用主题 与之相关的
  • 您可以通过连接URL中的
    KrbAuthType
    参数来控制驱动程序将使用哪个方法,否则它将逐个尝试每个方法

    因此,使用keytab文件(方法2)所要做的就是

  • 创建一个
    jaas.conf
    文件,指定键表位置、主体等
  • 在程序中设置系统属性
    java.security.auth.login.config
    (或使用 JVM启动参数
    -Djava.security.auth.login.config=
    ),指向该
    jaas.conf
    的位置,以及
  • 在JDBC连接URL中,设置
    …AuthMech=1
    KrbRealm=;KrbHostFQDN=your.impalad.host.com;Kerberos身份验证的KrbServiceName=
  • …在尝试连接之前


    或者,
    kinit
    在调用Java应用程序之前,使用您的keytab使票证缓存包含必要的TGT(基本上,使用上面的方法3)。

    我现在可以使用独立类连接到Impala。但我们确实使用hibernate配置文件创建了动态数据源。有没有办法在hibernate配置文件中指定系统属性?不是hybernate专家,所以无法回答这个问题。但我相信选项3对您来说可能是一个更好的选择——只需定义
    KRB5_CONFIG
    KRB5CCNAME
    env。变量,
    kinit-k-t
    ,您不需要设置任何系统属性。