如何将JNDI格式化为使用域用户而不是SQL用户进行身份验证

时间:2018-08-14 11:10:22

标签: java sql-server jndi windowsdomainaccount

我在Java应用程序中使用SQL Server用户名和密码的JNDI正常工作。当我尝试将用户更改为域用户而不是SQL用户时,它将抛出NameNotFoundException

Here,我只需要提供integratedSecurity为真。我是否错过了JNDI中的任何内容?

具有SQL Server用户的JNDI:

<Resource
name="jdbc/MyJNDI"
auth="Container"
type="javax.sql.DataSource"
maxTotal="100"
maxIdle="30"
maxWaitMillis="1000"
validationQuery="select 1"
testOnBorrow="true"
testOnConnect="true"
testOnReturn="true"
testWhileIdle="true"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;database=survey;user=myuser;password=mypassword;"
/>

我与域用户的JNDI:

<Resource
name="jdbc/MyJNDI"
auth="Container"
type="javax.sql.DataSource"
maxTotal="100"
maxIdle="30"
maxWaitMillis="1000"
validationQuery="select 1"
testOnBorrow="true"
testOnConnect="true"
testOnReturn="true"
testWhileIdle="true"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;database=survey;integratedSecurity=true;"
/>

1 个答案:

答案 0 :(得分:0)

另一个驱动程序是必需的。参见此来源http://www.bigdata-unleashed.com/20150930/database-ntlm-authentifizierung

<Resource
name="jdbc/MyJNDI"
auth="Container"
type="javax.sql.DataSource"
maxTotal="100"
maxIdle="30"
maxWaitMillis="1000"
integratedSecurity="true"
validationQuery="select 1"
testOnBorrow="true"
testOnConnect="true"
testOnReturn="true"
testWhileIdle="true"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="net.sourceforge.jtds.jdbc.Driver"
url="jdbc:jtds:sqlserver://localhost:1433;database=survey;"
/>

可通过http://sourceforge.net/projects/jtds/files/jtds/

获得数据库驱动程序