这个答案是不正确的。我能够使用 kerberos 从 PCF 连接到 SQL 服务器。
首先,我创建了一个用于连接数据库的用户 ID 和密码,并通过 Windows 身份验证检查我是否能够连接到数据库。
然后我创建了一个 krb5.config。
示例文件
[libdefaults]
renew_lifetime = 7d
forwardable = false
default_realm = ABC.NET
ticket_lifetime = 24h
dns_lookup_realm = false
dns_lookup_kdc = false
#default_tgs_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
#default_tkt_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
#hortonworks hive jdbc troubleshooting
udp_preference_limit = 1
[domain_realm]
abc.net = ABC.NET
[logging]
default = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
kdc = FILE:/var/log/krb5kdc.log
[realms]
ABC.NET = {
admin_server = server.abc.net
kdc = server.abc.net
}
随后我创建了一个 SQLDriver 配置文件:
SQLJDBCDriver {
com.sun.security.auth.module.Krb5LoginModule required
debug=true
useTicketCache=true
renewTGT=true
ticketCache="/home/vcap/app/krb_ticket"
useKeyTab=true
keyTab="/home/vcap/app/BOOT-INF/classes/test.keytab"
principal="userid@ABC.NET"
useFirstPass=true
tryFirstPass=true
storePass=true
storeKey=true
serviceName="database-host-name"
}
JAVA_OPTS: -XX:ParallelGCThreads=8 -XX:MaxPermSize=2048m -XX:+UseConcMarkSweepGC -XX:+UseCompressedOops -XX:MaxDirectMemorySize=512m -Duser.timezone="America/Chicago" -DLOG_FILE="/home/vcap/logs/activity.log" -Djava.security.krb5.conf=/home/vcap/app/BOOT-INF/classes/krb5-test.conf -Dsun.security.krb5.debug=true -Djava.security.krb5.realm=ABC.NET -Djava.security.krb5.kdc=server.abc.net -Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.auth.login.config=/home/vcap/app/BOOT-INF/classes/mssql-jdbc-test.conf
doNotPrompt=true;
};
DataSource config
我在资源文件夹中包含了所有配置文件。
它对我有用