2016-06-15 7 views
7

Ich möchte eine Verbindung zu einem SQL Server mithilfe von JDBC und Windows-Authentifizierung herstellen können. Ich sah einige Antworten im Internet sagen, ich sollte die folgende Eigenschaft der Verbindungszeichenfolge hinzufügen:Verbinden mit SQL Server mit Windows-Authentifizierung von einer Linux-Maschine über JDBC

integratedSecurity=true; 

Und fügen auch

sqljdbc_auth.dll 

zu dem Java-Pfad.

Aber das, soweit ich verstehe, gilt nur, wenn ich von einer Windows-Maschine verbinden. Wenn ich versuche, diese auf einem Linux-Rechner erhalte ich:

java.sql.SQLException: This driver is not configured for integrated authentication 

Meine Frage ist, wie ich es von einem Linux-Rechner tun.

Dank

+0

„dll“ ist ein Hinweis, dass dies wahrscheinlich ein Fenster Bibliothek. Unter Linux hätten Sie wahrscheinlich ein ".so" oder etwas anderes als "dll". – Fildor

+0

@Fildor ich weiß, deshalb fragte ich, wie mache ich es von Linux. – zuckermanori

+0

@mjn Ich lese diesen Artikel, aber es gilt für Windows und nicht Linux, wie ich fragte – zuckermanori

Antwort

14

Nun, schließlich ich meine eigene Frage beantworten: Dies ist nicht möglich, Windows-Authentifizierung von einem Linux-Rechner mit den Microsoft JDBC-Treiber zu verwenden. Dies ist möglich, die jTDS JDBC-Treiber mit der folgenden Verbindungszeichenfolge:

jdbc:jtds:sqlserver://host:port;databaseName=dbname;domain=domainName;useNTLMv2=true; 

Danke alle für die Kommentare

+1

Ich versuche das gleiche zu implementieren. Ich bin in der Lage, eine Verbindung zu SqlServer mit jtDs und Windows-Authentifizierung von Unix-Maschine, aber die einfügen Abfragen sind fehlgeschlagen. Fordern Sie bitte einen Blick auf [this] (http://stackoverflow.com/questions/39658960/exception-while-using-jtds-for-sqlserver-connectivity) Stack Overflow Frage – Sumit

+0

Diese funktioniert, danke – sendon1982

+0

Wie geht es? Sie beweisen Benutzerauthentifizierung Details in dieser Verbindungszeichenfolge? Ich muss alles in die Verbindungs-URL einbetten. – Pradatta

1

TL; DR

Es ist nicht möglich native Windows-Authentifizierung für JDBC-Verbindungen zu verwenden, um von einer JVM läuft auf Linux MSSQL.


Dieser MSDN-Artikel der authentiation Methoden mit JDBC auf Linux, mögliche Fehler erklärt und verfügbare Optionen:

https://blogs.msdn.microsoft.com/psssql/2015/01/09/jdbc-this-driver-is-not-configured-for-integrated-authentication/

... in den JDBC 4.0-Treiber, können Sie Die Authentifizierungsscheme Verbindungseigenschaft, um anzugeben, wie Sie Kerberos zu Verbindung zu SQL verwenden möchten. Hier gibt es zwei Einstellungen.

  • NativeAuthentication (default) - Diese verwendet die sqljdbc_auth.dll und ist auf der Windows-Plattform spezifisch. Dies war die einzige Option vor dem JDBC 4.0-Treiber.

  • JavaKerberos - Verwendet die Java-APIs, um Kerberos aufzurufen, und verlässt sich nicht auf die Windows-Plattform. Dies ist Java-spezifisch und nicht gebunden an das zugrunde liegende Betriebssystem, so dass dies sowohl auf Windows-und Linux-Plattformen verwendet werden kann.

...

Das folgende Dokument beschreibt, wie Kerberos mit dem JDBC-Treiber verwenden und geht durch das, was benötigt wird, JavaKerberos Arbeits richtig zu erhalten.

mit Kerberos integrierten Authentifizierung zu SQL Server Verbinden http://msdn.microsoft.com/en-us/library/gg558122%28v=sql.110%29.aspx

+0

Ich habe diesen Artikel auch gelesen. Ich verstehe immer noch nicht, ob ich das JavaKerberos-Flag zur Authentifizierung mit Windows-Authentifizierung verwenden kann. – zuckermanori

+0

@zuckermanori Kerberos-Authentifizierung erfordert einen Kerberos-Server. Es ist ein anderer Standard als die native Windows-Authentifizierung. Daher müssen Sie zuerst mit Ihrem System-/Netzwerkadministrator klären, ob Kerberos für Ihre Umgebung verfügbar ist. – mjn

+0

Ich weiß, dass es anders ist, ich suche nach einer Möglichkeit, Windows-Authentifizierung, nicht Kerberos zu verwenden. Danke trotzdem. – zuckermanori

Verwandte Themen