1. 程式人生 > >springmvc整合kerberos認證hive jdbc連線

springmvc整合kerberos認證hive jdbc連線

話說,是springmvc連線hive沒啥問題,那如果是kerberos認證的hive怎麼連

 <beans:bean id="jdbcListener" class="com.bonc.bm.core.listener.JdbcListener">
      <beans:constructor-arg name="kerberos" value="true"></beans:constructor-arg>
        </beans:bean>
    <beans:bean id="hiveDriver" class="org.apache.hive.jdbc.HiveDriver" />
    <beans:bean id="hiveDataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource" depends-on="jdbcListener">
        <beans:constructor-arg name="driver" ref="hiveDriver"/>
        <beans:constructor-arg name="url" value="${hive.url}"/>
    </beans:bean>

     <beans:bean id="hiveTemplete" class="org.springframework.jdbc.core.JdbcTemplate">
        <beans:property name="dataSource" ref="hiveDataSource"></beans:property>
    </beans:bean>

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.UserGroupInformation;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 * author:SK
 * date:2018/9/26
 * name:
 */
public class JdbcListener {

    private Boolean kerberos;

    public JdbcListener(Boolean kerberos){

        this.kerberos = kerberos;
        if (kerberos){
            //System.setProperty("java.security.krb5.conf", "krb5.conf");
            System.setProperty("java.security.krb5.conf", "/data/bonc_zhfk/conf_files/krb5.conf");
            Configuration configuration = new Configuration();
            configuration.set("hadoop.security.authentication" , "kerberos" );
            // 這樣我們就不需要互動式輸入密碼了
       
            configuration.set("keytab.file" , "bcc.keytab" );
            configuration.setBoolean("hadoop.security.authorization", true);
            // 這個可以理解成使用者名稱資訊,也就是Principal
         
            configuration.set("kerberos.principal" , "hive/
[email protected]
" ); try { UserGroupInformation. setConfiguration(configuration); UserGroupInformation.loginUserFromKeytab("hive/[email protected]", "bonc_zhfk.keytab"); } catch (IOException e) { e.printStackTrace(); } } } }

其中 krb5.conf有許可權限制

-r-------- 1 bcc.keytab
-rw-r--r-- 1 krb5.conf