4

我正在尝试从部署在 PCF 中的 .net 核心应用程序连接到 SQL Server。当我使用用户名和密码时,我可以连接。但无法配置 Windows 身份验证。我的应用程序需要使用 Windows 身份验证

此链接(https://github.com/Microsoft/vscode-mssql/issues/985#issuecomment-345408856)说在 SQL 中启用 Kerberos 身份验证。

我已经用 kerberos 配置了 SQL 服务器。仍然无法连接。还需要什么?

连接时出现异常:

无法访问 Kerberos 票证。确保 Kerberos 已使用“kinit”初始化。

4

2 回答 2

0

这个答案是不正确的。我能够使用 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

我在资源文件夹中包含了所有配置文件。

它对我有用

于 2020-12-11T08:54:08.737 回答
0

根据https://dotnet-cookbook.cfapps.io/wcf/上的帖子,PCF 不支持 Windows 身份验证 -

由于 Cloud Foundry 单元及其容器未加入域,因此它们无法使用 Active Directory 帐户对调用进行身份验证。另一种选择可能是使用基本身份验证而不是 https 或基于证书的身份验证

于 2020-04-23T11:49:50.660 回答