2012-06-27 57 views
15

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

这可能吗?仅供参考,我从来没有使用过苹果电脑,所以我非常喜欢他们的新手。我在互联网上搜索了所有内容,但还没有找到解决方案。 预先感谢您。

回答

4

Using Kerberos Integrated Authentication to Connect to SQL Server

在Microsoft JDBC驱动程序4.0开始的SQL服务器,应用程序 可以使用authenticationScheme连接属性表明 它要使用类型4 Kerberos来连接到数据库集成 认证。


jTDS JDBC驱动程序SQL Server支持简单地使用财产作为FAQ描述Windows身份验证。

指定Windows域进行身份验证。如果提供目前以及用户名和 密码,JTDS使用Windows(NTLM) 认证而不是通常的SQL Server身份验证(即 提供的用户和密码是域用户和密码)。此 允许非Windows客户端登录到仅配置为接受Windows身份验证的 的服务器。

如果域参数存在,但没有提供用户名和密码,JTDS使用其本地单点登录库和日志中 与登录的Windows用户的凭据(这个工作一会 显然需要在Windows上登录到域中,并且还安装了SSO库 - 请参阅 上的README.SSO发布内容)。

20

根据我的经验,这些信息很难获得。自从微软更改了规则并添加了authenticationScheme参数后,我的所有搜索都出现了错误(过时)的信息。在帮助下一代人的利益,这里是一个可行的连接字符串的例子:

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

另外,在驱动程序属性中设置"Domain"。不要在任何用户名称设置中包含域。

这在Mac OSX上使用Squirrel SQL(Java)与jtds进行了测试。希望前面的句子有人可能使用的搜索词,他们需要知道这些信息。

+0

这是我找到了正确的信息的唯一地方。 –

+0

客户端:Grails/Groovy 2.0.4,jtds驱动程序MacOSX(在eclipse下)。服务器:MSSQL 2008,使用Windows身份验证。 –

+1

值得一提的是,您需要下载jTDS驱动程序(http://jtds.sourceforge.net/index.html),它似乎是唯一一个使用Kerberos集成的驱动程序。我知道它在连接字符串中,但有些人可能会错过它,并且无法使用其他驱动程序进行连接。 – lotif

2

我在mac上使用jTDS(10.9)。

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

因此,一个示例连接字符串是:

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

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

0

这是一个旧帖子,但可能与某些人有关。请参阅此其他SO post,其中介绍了如何通过JDBC从Linux计算机通过Windows身份验证连接到SQL Server。这也适用于mac。

0

JTDS不如微软的JDBC驱动程序(特别是,它不能找出类型的参数在一份声明中)

是的,你可以使用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不具有MSSQLSrv/$host的SPN,添加serverSp=$SPN到JDBC连接字符串

相关问题