【问题标题】:SQL Server authentication using domain account from Java [duplicate]使用 Java 中的域帐户进行 SQL Server 身份验证 [重复]
【发布时间】:2013-07-07 05:49:25
【问题描述】:

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

有没有一种等效的方法可以用 Java 做到这一点?

【问题讨论】:

  • 您的意思是 LDAP 服务器吗?
  • 不是,它是一个与 Windows 生态系统集成的 Java 应用程序。

标签: java sql-server impersonation


【解决方案1】:

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

我们所做的是定义一个非 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-12
    • 2016-06-04
    • 2015-04-03
    • 1970-01-01
    • 2011-07-02
    • 2021-01-29
    • 2018-11-25
    • 2021-02-08
    相关资源
    最近更新 更多