使用集成安全性连接到JDBC并指定用户名和密码

时间:2017-11-03 13:25:42

标签: sql-server jdbc sql-server-2008-r2 tomcat8

我需要使用Windows身份验证用户通过在连接字符串中指定用户名和密码来连接到SQL Server。

不知何故,我需要像这样建立一个连接:

driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://192.168.48.61\\sqlexpress2008r2;
databaseName=MyTestDatabase;integratedSecurity=true;
username=mydomain\eric;password=mypwd

由于要求似乎很奇怪,我试图放弃我的方案:

  • 在我的应用程序中,用户被映射到SQL Server用户(使用sql身份验证或Windows身份验证)

  • 有一个Windows客户端可以从LAN内部访问数据库

  • 我正在编写一个Web应用程序(Tomcat8 servlet)来从Internet访问数据库:在这种情况下,我希望用户在登录屏幕中键入domain \ username和password以登录他

    < / LI>

我这样做的原因是因为我需要测试提供的域\用户名和密码是否有效。完成此检查后,我将与sa用户连接到db,但为登录用户分配适当的权限(取决于他的用户名)。 由于架构约束,我应该通过尝试使用JDBC来连接数据库来测试这个,所以想法是:

  • 为Windows身份验证用户创建连接字符串

  • 尝试连接

如果连接已经确定,我假设用户和密码是正确的。

所以我需要创建一个JDBC连接字符串,其中我使用集成安全性,我明确定义了用户名(DOMAIN \ USER)和密码。我没有找到任何关于如何执行此操作的示例。

1 个答案:

答案 0 :(得分:3)

  

驱动= com.microsoft.sqlserver.jdbc.SQLServerDriver   URL = JDBC:SQLSERVER://192.168.48.61 \ sqlexpress2008r2;   的databaseName = MyTestDatabase;的 integratedSecurity =真;   的用户名= MYDOMAIN \埃里克;密码= MYPWD

这绝不会有效。

  

因此,如果您希望允许Windows中的用户abc \ user1   访问数据库,然后完全创建SQL Server登录   相同的用户名和密码。

这也永远不会奏效。

您无法使用“\”创建 SQL Server登录(在此上下文中与 Windows登录相对),它将被识别为Windows登录并且你会收到有关无效字符的错误。

可信连接集成安全性意味着它不是对您进行身份验证的服务器,但它是执行此操作的Windows。

因此,您无法通过Windows namepassword:您的帐户应该由Windows验证,而SQL Server只会信任这些凭据。