我正在尝试从PCF中部署的.net核心应用程序连接到SQL Server。使用用户名和密码时,我可以连接。 但是无法配置Windows身份验证。我的应用要求使用Windows身份验证
此链接(https://github.com/Microsoft/vscode-mssql/issues/985#issuecomment-345408856) 说在SQL中启用Kerberos身份验证。
我已经用kerberos配置了SQL Server。仍然无法连接。还需要什么?
我在连接时遇到异常:
无法访问Kerberos票证。确保Kerberos已使用“ kinit”初始化。
答案 0 :(得分:0)
根据https://dotnet-cookbook.cfapps.io/wcf/上的帖子,PCF不支持Windows身份验证-
由于Cloud Foundry单元及其容器未加入域,因此它们无法使用Active Directory帐户对呼叫进行身份验证。另一种选择是使用基于https的基本身份验证或基于证书的身份验证
答案 1 :(得分:0)
此答案不正确。我能够使用kerberos从PCF连接到SQL Server。
首先,我创建了一个用于连接数据库的用户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 Config文件:
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
我将所有配置文件都包含在资源文件夹中。
对我有用