使用Windows身份验证从Spring Boot应用程序连接到MSSQL

7

我目前使用以下属性从Java Spring Boot应用程序连接到远程Mssql服务器:

spring.datasource.url=jdbc:sqlserver://ip\\domain;databaseName=name
spring.datasource.username=abc
spring.datasource.password=def
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver

该应用程序可以从Windows和Unix服务器运行。现在,我需要开始使用Windows身份验证而不是数据库凭据。这已经在MSSQL方面进行了配置和支持。但是,在Java Spring Boot中无法正常工作。我尝试将integratedSecurity=true添加到URL中,但它说找不到dll文件。我将sqljdbc_auth.dll添加到Java JRE bin文件夹中,但仍然无法正常工作。


你遇到了任何错误吗? - kj007
错误:域不受信任。我尝试使用Kerberos,因为我将在Unix上部署。我添加了:;integratedSecurity=true;authenticationScheme=JavaKerberos,然后在同一Spring Boot属性文件中添加了:-Djava.security.krb5.conf=krb5.conf。在conf文件中,我不确定要添加什么,所以我只添加了以下内容:default_realm = [域名] dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h forwardable = yes //这也没有起作用。新的错误说Kerberos数据库中找不到客户端。你能帮忙吗?是服务器端缺少某些东西吗? - user666
@user666:你能解决这个问题吗? - Dipika
不,我目前正在使用数据库凭据。 - user666
3个回答

7

我正在使用 MS SQL Server 2016、Hibernate 5.3.7.Final 和 Spring Boot 2.2.0 进行开发。对我来说,将以下这行代码添加到属性中可解决问题:(无需 jtds!)

spring.datasource.url=jdbc:servername;databasename=your_db_name;integratedSecurity=true

您可能还需要以下属性:
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect

如果你遇到了“在java.library.path中没有sqljdbc_auth”的问题。

你可以参考这个答案:no sqljdbc_auth


我的application.properties文件中的连接字符串还包含一些其他参数: spring.datasource.url=jdbc:sqlserver://[name]:[port];DatabaseName=[db_name];encrypt=true;trustServerCertificate=true;integratedSecurity=true; - Yauheni Leaniuk

1

尝试使用jtds驱动程序,并在应用程序属性中使用:

    app.datasource.youraplication.jdbcUrl=jdbc:jtds:sqlserver://yourBdHost/yourSchemaBd;domain=yourDomain

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接