2012-06-27 93 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連接字符串

相關問題