17

是否可以从 Mac 使用 Windows 身份验证/集成安全性连接到 SQL Server?我正在使用 Microsoft 提供的 type 4 JDBC 驱动程序。前端(表单应用程序)是用 Java 编码的。一切都在 Windows 上完美运行,但办公室中的一个人使用的是 Mac。

这可能吗?仅供参考,我从未使用过 Mac,所以我是他们的新手。我在整个互联网上搜索过,但没有找到解决方案。先感谢您。

4

7 回答 7

27

根据我的经验,这些信息很难获得。由于微软更改了规则并添加了authenticationScheme参数,我的所有搜索都出现了错误(过时的)信息。为了帮助下一个人,下面是一个有效的连接字符串示例:

jdbc:jtds:sqlserver://123.123.123;instance=server1;databaseName=students;integratedSecurity=true;authenticationScheme=JavaKerberos

也在驱动程序属性集中"Domain"。不要在任何用户名设置中包含域。

这是在 Mac OSX 上使用带有 jtds 的 Squirrel SQL (Java) 测试的。希望上一句有可能需要知道此信息的人使用的搜索词。

于 2012-09-27T15:39:23.147 回答
4

使用 Kerberos 集成身份验证连接到 SQL Server

从 Microsoft JDBC Driver 4.0 for SQL Server 开始,应用程序可以使用authenticationScheme连接属性来指示它想要使用类型 4 Kerberos 集成身份验证连接到数据库。


SQL Server的jTDS JDBC 驱动程序支持 Windows 身份验证,只需使用常见问题解答中描述的属性。

领域

指定要在其中进行身份验证的 Windows 域。如果存在并且提供了用户名和密码,jTDS 使用 Windows (NTLM) 身份验证而不是通常的 SQL Server 身份验证(即,提供的用户和密码是域用户和密码)。这允许非 Windows 客户端登录到仅配置为接受 Windows 身份验证的服务器。

如果域参数存在但没有提供用户名和密码,jTDS 使用其本地单点登录库并使用已登录的 Windows 用户凭据登录(为此,显然需要在 Windows 上登录一个域,并且还安装了 SSO 库——请参阅发行版中的 README.SSO,了解如何执行此操作)。

于 2012-06-27T21:25:40.743 回答
1

我在 mac (10.9) 上使用 jTDS。

使用此驱动程序,您需要像往常一样指定用户名和密码,唯一的区别是您需要在连接字符串中指定 domain=WHATEVERTHENTDOMAIN(或者如果您愿意,也可以指定连接属性)。

所以一个示例连接字符串是:

jdbc:jtds:sqlserver://db_server:1433/DB_NAME;domain=NT_DOMAIN_NAME

jTDS 驱动程序然后使用 NTLM 使用用户名和密码登录到指定的域。

于 2014-03-05T16:35:46.230 回答
0

jTDS 不如微软的 JDBC 驱动(特别是它无法判断prepared statement中的参数类型)

是的,您可以使用 Active Directory 身份验证对 MS SQL Server 进行身份验证,因为 Active Directory 只是 Kerberos + LDAP,它们是开源的并在 Mac 上实现

Kerberos 配置/etc/krb5.conf

[libdefaults]
default_realm = YOUR_REALM.NET

[realms]
YOUR_REALM.NET = {
    kdc = host.your-domain.net
}

我需要使用 KDC 的完全限定域名,而不仅仅是域名

JDBC 连接字符串:

jdbc:sqlserver://$host;database=$db;integratedSecurity=true;authenticationScheme=JavaKerberos

如果$host没有 的 SPN MSSQLSrv/$host,则添加serverSp=$SPN到 JDBC 连接字符串

于 2017-08-02T22:51:04.000 回答
0

说一个驱动程序可以确定数据类型而另一个驱动程序不能确定是不正确的。 任何驱动程序都必须根据传递的参数查看隐含的类型。jTDS 和微软的驱动程序都这样做。这是协议的一个限制——数据库不能告诉驱动程序哪种类型是正确的,因为在许多查询中它不知道你想要什么。

在每个版本中,jTDS 和微软的驱动都有不同的问题和不同的优势。“最佳”选择取决于您查看的每个版本以及您的需求。随着不同版本的出现,我不得不来回切换——微软以某种方式打破,然后添加了我想要的东西。

于 2019-09-06T01:11:44.607 回答
0

这是一个旧帖子,但可能与某些人有关。请参阅其他SO 帖子,该帖子描述了如何通过 JDBC 从 Linux 机器连接到具有 Windows 身份验证的 SQL Server。这也适用于mac。

于 2017-06-26T21:05:42.470 回答
-1

以下连接字符串对我有用

jdbc:jtds:sqlserver://server_name:port_name;useLOBs=false;databaseName=db_name;useNTLMv2=true;domain=domain_name;

我正在使用jTDS 1.3.2SQuirreL SQL Client

于 2021-02-18T15:26:54.197 回答