使用Java中的域帐户进行SQL Server身份验证

时间:2013-07-09 14:48:08

标签: java sql-server impersonation

我正在开发一个在Linux / WebLogic上运行的Java项目,该项目需要与仅允许通过Windows域帐户进行身份验证的现有SQL Server实例集成。我见过.Net应用程序使用模拟来连接并运行查询作为具有权限的域帐户。

使用Java有同样的方法吗?

1 个答案:

答案 0 :(得分:0)

虽然这个问题与潜在的重复问题密切相关,但我会发布我的答案,希望将来对某人有所帮助。

我们所做的是定义一个非jndi数据源:

<bean id="nonJndiDataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driver" value="net.sourceforge.jtds.jdbcx.JtdsDataSource"/>
    <property name="url" value="${url}"/>
    <property name="username" value="${user}"/>
    <property name="password" value="${password}"/>
    <property name="initialSize" value="${initial_size}"/>
    <property name="maxActive" value="${max_active}"/>
    <property name="maxWait" value="${max_wait}"/>
    <property name="minIdle" value="${min_idle}"/>
    <property name="maxIdle" value="${max_idle}"/>
</bean>

使用以下属性文件(用于设置bean中的值):

# Hibernate specific property
dialect=org.hibernate.dialect.SQLServer2008Dialect

# This is the key line
url=jdbc:jtds:sqlserver://127.0.0.1;databaseName=yourDatabase;useNTLMv2=true;domain=nameOfDomain

user=windows_account
password=password
initial_size=5
max_active=30
max_wait=600000
min_idle=0
max_idle=10

然后可以将其挂钩到JDBC,Hibernate,JDBI或其他一些基于JDBC的框架。

这篇文章的一个问题是jTDS的版本。版本1.3需要Java 7 - 我们最终为版本1.2.x提取了jar。