【问题标题】:Connecting to SQL Server via Windows Authentication with Java providing credentials使用 Java 提供凭据通过 Windows 身份验证连接到 SQL Server
【发布时间】:2013-06-25 20:57:02
【问题描述】:

我正在编写一个 java 应用程序,通过将数据库中的数据与预期结果进行比较来帮助我的部门审核我们的文档。它还允许创建报告以验证数据。我已经能够让它完美地工作,但现在我的主管希望更多的人能够使用该应用程序,而不是数据库管理员想要授予访问权限。那么问题来了:

我需要能够连接到 MS SQL Server(使用 Windows 身份验证),方法是使用与 Windows 用户帐户不同的凭据(例如应用程序的所有用户的通用用户名和密码)。有没有办法操纵或设置发送到服务器以进行 Windows 身份验证的凭据?我应该使用什么驱动程序或应该附加外部 jar?

用户与服务器位于同一个域中,因此这不应该成为问题。我也不需要知道如何使用 Windows 身份验证进行连接,我已经这样做了。而且我不需要 SSO。我查看了 JTDS,但它似乎仍在使用以下格式获取 windows 帐户:

String DATABASE_URL = "jdbc:jtds:sqlserver://<ServerName>:<port>/<DatabaseName>;user=<username>;password=<password>;domain=<Domain>;";

提前致谢!

【问题讨论】:

    标签: java sql-server windows-authentication


    【解决方案1】:

    我很确定这是不受支持的。

    当用户通过 Windows 用户帐户连接时,SQL Server 使用 Windows 主体验证帐户名和密码 操作系统中的令牌。这意味着用户身份是 Windows 确认。 SQL Server 不要求输入密码,并且 不执行身份验证。 Windows 身份验证是 默认的认证方式,比SQL安全多了 服务器身份验证。 Windows 身份验证使用 Kerberos 安全性 协议,提供关于密码策略的强制执行 强密码的复杂性验证,提供支持 帐户锁定,并支持密码过期。建立了联系 使用 Windows 身份验证有时称为可信连接, 因为 SQL Server 信任 Windows 提供的凭据。

    http://technet.microsoft.com/en-us/library/ms144284.aspx

    【讨论】:

    • 在查看 jTDS 时,它提到能够在非 Windows 机器上使用 Windows 身份验证。我想可以从 Windows 机器上复制相同的过程,但也许我错了。 http://jtds.sourceforge.net/faq.html 说“如果没有安装本机 SSO 库,您仍然必须提供用户名和密码,否则 jTDS 无法确定用户凭据。这有一个好处:非 Windows 平台上的用户能够使用 Windows 凭据登录通过在 URL 中提供它们以及域名。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 2013-09-07
    • 2014-07-27
    • 1970-01-01
    相关资源
    最近更新 更多