2012-06-27 25 views
15

Czy można połączyć się z serwerem SQL przy użyciu uwierzytelniania systemu Windows/zintegrowanych zabezpieczeń z komputera Mac? Używam sterownika JDBC typu 4 dostarczonego przez firmę Microsoft. Front end (aplikacja formularzy) jest kodowany w Javie. Wszystko działa doskonale w systemie Windows, ale jedna osoba w biurze używa komputera Mac.Uwierzytelnianie systemu Windows dla serwera SQL przy użyciu JBDC na komputerze Mac

Czy to możliwe? FYI, nigdy nie używałem komputerów Mac, więc jestem bardzo początkującym z nimi. Przeszukałem cały Internet, ale nie znalazłem rozwiązania. Z góry dziękuję.

Odpowiedz

4

Using Kerberos Integrated Authentication to Connect to SQL Server

Począwszy od Microsoft JDBC 4.0 Sterownik dla SQL Server, aplikacji można wykorzystać właściwość połączenia authenticationScheme aby wskazać, że chce połączyć się z bazą danych za pomocą typ 4 Kerberos zintegrowane uwierzytelnianie .


jTDS sterownik JDBC dla SQL Server obsługuje uwierzytelnianie systemu Windows po prostu używając domeny własności w sposób opisany w FAQ.

domeny

Określa domenę systemu Windows w celu uwierzytelnienia. Jeśli obecne, a nazwa użytkownika i hasło są, jTDS korzysta z systemu Windows (NTLM) uwierzytelniania zamiast uwierzytelniania zwykle SQL Server (to znaczy podany użytkownik i hasło to użytkownik domeny i hasło). Ten numer umożliwia klientom innym niż system Windows zalogowanie się na serwerach, które są tylko skonfigurowane do akceptowania uwierzytelniania systemu Windows.

Jeśli parametr domeny jest obecny, ale nie nazwę użytkownika i hasło są, jTDS wykorzystuje natywne Single-Sign-On biblioteka i dzienniki w z poświadczeń zalogowanego użytkownika systemu Windows (w tym do pracy można by oczywiście trzeba być w systemie Windows, zalogować się do domeny, a także mieć zainstalowaną bibliotekę SSO - skonsultuj się z README.SSO w dystrybucji na , jak to zrobić).

20

Ta informacja jest trudna do zdobycia z mojego doświadczenia. Wszystkie moje wyszukiwania okazały się nieprawidłowe (nieaktualne), ponieważ Microsoft zmienił reguły i dodał parametr authenticationScheme. W interesie pomagając następną osobą, tutaj jest przykład ciąg połączenia, który działa:

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

Również we właściwościach sterownika ustawić "Domain". Nie dołączaj domeny do żadnego ustawienia nazwy użytkownika.

Zostało to przetestowane przy użyciu wiewiórki SQL (Java) z jtds na Mac OSX. Mam nadzieję, że poprzednie zdanie zawiera wyszukiwane hasła, które ktoś może wykorzystać, aby poznać te informacje.

+0

To było jedyne miejsce znalazłem właściwą informację. –

+0

Klient: Grails/Groovy 2.0.4, sterownik jtds MacOSX (pod zaćmieniem). Serwer: MSSQL 2008, przy użyciu uwierzytelniania systemu Windows. –

+1

Warto powiedzieć, że trzeba pobrać sterownik jTDS (http://jtds.sourceforge.net/index.html), wydaje się być jedynym z integracją Kerberos. Wiem, że jest on w łańcuchu połączenia, ale niektórzy mogą go ominąć i nie połączyć się z innymi sterownikami. – lotif

2

Używam jTDS na Macu (10.9).

Używając tego sterownika, musisz podać nazwę użytkownika i hasło jak zawsze, jedyną różnicą jest to, że musisz podać domena = WHATEVERTHENTDOMAIN w ciągu połączenia (lub, jeśli wolisz, właściwości połączenia).

Więc ciąg połączenia próbka:

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

Kierowca jTDS następnie używa NTLM, aby zalogować się do określonej domeny z nazwą użytkownika i hasłem.

0

To jest stary wpis, ale może być istotny dla niektórych osób. Zobacz ten inny dokument SO post, który opisuje, jak połączyć się z serwerem SQL z uwierzytelnianiem Windows z komputera z systemem Linux za pośrednictwem JDBC. To zadziała również na Macu.

0

jTDS jest gorsza od sterownika JDBC Microsoft (w szczególności nie może dowiedzieć się, typy parametrów w przygotowanym oświadczeniu)

Tak, można uwierzytelniać do MS SQL Server przy użyciu uwierzytelnianie usługi Active Directory, jak Active Directory tylko Kerberos + LDAP, które są open source i wdrażane na Mac

Kerberos config /etc/krb5.conf:

[libdefaults] 
default_realm = YOUR_REALM.NET 

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

i potrzebne do korzystania w pełni kwalifikowaną nazwę domeny KDC, a nie tylko nazwa domeny

JDBC String Connection:

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

Jeśli $host nie ma SPN z MSSQLSrv/$host, dodać serverSp=$SPN do połączenia łańcucha JDBC

Powiązane problemy