为什么要使用Kerberos认证方式连接:
一般情况下,JDBC与集群创建的连接方式,是不受认证管理的,只要IP、端口、用户名和密码是正确且符合集群访问限制的JDBC连接,都可以连接到集群进行操作,在一些安全项目中,需要有第三方认证管理机制,对访问集群的JDBC进行认证,符合认证条件才可以进行相关的操作,这种情况下就可以使用较为成熟的Kerberos认证机制。
什么是Kerberos认证方式连接:
通过Kerberos认证机制进行连接的方式即为Kerberos认证方式连接,Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。
使用前必须确保数据库版本支持Kerberos认证并且已经配置好Kerberos认证相关服务。具体使用可以参考数据库手册要求。在使用Kerberos认证时,需要确保jdbc所在机器的时间与Kerberos服务器时间一致。
Kerberos连接配置方式:
1、需要从集群获取keytab文件,拷贝到JDBC所在应用服务器的某一目录。
2、需要执行kinit命令初始化票据凭证,最后一个参数为kerberos client端principal name,命令如下:
1)linux: kinit -kt /opt/gcluster/ktest1.keytab ktest1@gbase.cn
2)window:kinit -k -t D:\\svn\\kerberos\\ktest1.keytab ktest1@gbase.cn
3、从Kerberos服务器获取krb5.conf文件(linux默认安装在/etc下面),如果jdbc部署在linxu服务器下,直接拷贝到/etc下即可;如果部署在windows将其修改名字为krb5.ini然后复制到C:\Windows下面,注意里面的路径信息请修改为实际存在的路径。
代码示例如下:
// 以下为输出Kerberos日志,生产环境可以不使用。
System.setProperty("sun.security.krb5.debug","true");
System.setProperty("sun.security.jgss.debug","true");
String url ="jdbc:gbase://192.168.6.122:5258/test?"
+ "user=ktest" // 在集群中配置的Kerberos用户
"&enableKerberosFlag=true" // 开启Kerberos认证
"&clientPrincipalName=ktest1" // Kerberos认证实体名
"&kerberosKeyTab=D:\svn\kerberos\ktest1.keytab"; // Kerberos认证证书