我有三台服务器,App Server,Domain Controller和SQL Server。所有这些都通过本地网络连接。
我想要完成的是使用授权域用户的凭据(例如:dom \ dbadmin)将我的应用程序成功连接到数据库。
当我使用这些凭据进行本地连接时,它可以正常工作。
当我使用正确的凭据和本地IP在APP服务器上运行CMD的下一个代码时,它可以工作!
RUNAS /user:dom\dbadmin /netonly "C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Ssms.exe"
但是当我尝试使用以下连接字符串将我的应用程序连接到数据库时,它无法连接。
jdbc:sqlserver://10.20.30.110\MSSQLSERVER;databaseName=dBase;user=dom\dbadmin;password=!8899@te$t;
我已经成功建立了与相同数据库的连接,但是使用了SQL凭据和远程ip,它可以正常工作。
我做错了吗?或者是否无法与JDBC和域凭据建立连接?
答案 0 :(得分:1)
据我所知 - 要实现直通身份验证(连接字符串中的SSPI) - 您必须允许域控制器决定是否允许您使用您的凭据。为了做出此决定,控制器将对您的Windows身份验证进行回复,并对该域内的计算机施加所有强制安全限制。如果您以CORP \ UserName身份登录计算机,则SSMS将不允许您以其他人(如MyDomain \ OtherUser)的身份进行连接。即使你知道正确的密码也是如此。
如果您需要一个连接到SQL Server的应用程序,您可能必须在SQL Server上启用混合身份验证,然后生成应用程序密码(不依赖于Windows身份验证)。