Kann ich eine Verbindung zu SQL Server mithilfe der Windows-Authentifizierung von Java EE-webapp?
Ich bin derzeit, wie man eine Verbindung zu einer SQL Server-Datenbank von meinem Java-EE-Webanwendung mithilfe von Windows-Authentifizierung anstelle der SQL Server-Authentifizierung. Ich bin mit dieser app aus der Tomcat 6.0 und bin unter Verwendung der Microsoft JDBC-Treiber. Meine Verbindung-Eigenschaften-Datei sieht wie folgt aus:
dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver
dbUser = user
dbPass = password
dbServer = localhost:1433;databaseName=testDb
dbUrl = jdbc:sqlserver://localhost:1433
Ich habe null Probleme mit der Verbindung zu einer SQL Server-Datenbank in diesem Mode, wenn SQL Server-Authentifizierung verwenden.
Gibt es eine Möglichkeit kann ich abrufen der Anmeldeinformationen des Benutzers die Windows-Authentifizierung, und verwenden Sie , dass - Authentifizierung für den SQL Server?
UPDATE: ich weiß, in ASP.net es gibt einen Weg, um Windows-Authentifizierung für den Zugriff auf die webapp, das ist genau das was ich Suche, außer ich will, passieren, dass der token aus, um SQL Server für den Zugriff auf die Datenbank.
InformationsquelleAutor karlgrz | 2008-10-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nicht denke, man kann drücken Sie die Benutzer-Anmeldeinformationen vom browser an die Datenbank (und macht es Sinn ? Ich denke nicht)
Aber wenn Sie wollen, verwenden Sie die Anmeldeinformationen des Benutzers ausgeführt, Tomcat SQL Server verbinden, dann können Sie verwenden Sie Microsoft JDBC-Treiber.
Nur bauen Sie Ihre JDBC-URL wie diese:
Und kopieren der entsprechenden DLL-Tomcat - bin-Verzeichnisses (sqljdbc_auth.dll mit Fahrer)
MSDN - > Verbinden mit SQL Server JDBC-Treiber - > Bau der Verbindungs-URL
InformationsquelleAutor Jerome Delattre
Blick auf
http://jtds.sourceforge.net/faq.html#driverImplementation
Was ist das URL-format verwendet jTDS?
Das URL-format für die jTDS ist:
...
domain
Gibt die Windows-Domäne zu authentifizieren. Falls vorhanden und der Benutzer-name und Passwort zur Verfügung gestellt werden, jTDS verwendet Windows (NTLM) - Authentifizierung statt der üblichen SQL-Server-Authentifizierung (d.h. der Benutzer und das Kennwort, die Sie sind der domain-Benutzer und Passwort). Dies ermöglicht nicht-Windows-clients anmelden bei Servern, die nur so konfiguriert, dass die Windows-Authentifizierung.
Wenn der domain-parameter ist vorhanden, aber kein Benutzername und Passwort zur Verfügung gestellt werden, jTDS nutzt seine native Single-Sign-On-Bibliothek und meldet sich mit den angemeldeten Windows-Benutzer-Anmeldeinformationen (für diese Arbeit würde müssen natürlich auf Windows, angemeldet, die in einer Domäne, und haben auch die SSO-Bibliothek installiert haben-konsultieren Sie die README-Datei.SSO in der Verteilung auf, wie Sie dies tun).
InformationsquelleAutor opensas
Diese tatsächlich funktioniert für mich:
Pro die README-Datei.SSO, das kommt mit der jtdsd Verteilung:
Damit Single-Sign-On zu arbeiten, jTDS muss in der Lage sein, um das laden der nativen EPID Bibliothek
ntlmauth.dll
. Stelle diese DLL irgendwo im system-Pfad (festgelegt durch diePATH
system-Variablen), und Sie sind alle gesetzt.Ich legte es in meine jre/bin-Ordner
Konfigurierte ich einen dedizierten port der sql server-Instanz (2302), um zu lindern die Notwendigkeit für eine Instanz Namen - einfach etwas, das ich tun. lportal ist mein Datenbank name.
InformationsquelleAutor Andy
Es sei denn, Sie haben einige wirklich zwingenden Grund nicht an, ich schlage vor, Notwasserung die MS JDBC-Treiber.
Verwenden Sie stattdessen die jtds jdbc-Treiber. Lesen Sie die README-Datei.SSO-Datei in die jtds Verteilung, wie Sie für single-sign-on (native Authentifizierung) und wo die native DLL zu gewährleisten, kann es geladen werden, indem die JVM.
wenn Sie Authentifizierung auf Basis von Kerberos unter Linux hast dann kannst du SSO, aber von den ich finden konnte der einzige Weg, um es für MS SQL-Authentifizierung auf Linux ist von DataDirect-Treiber.
Warum ist der JTDS-Treiber vorzuziehen? Ich verstehe es nicht unterstützt das Verbindungspooling, die für mich unerlässlich ist.
Das ist mehr Arbeit als es Wert ist, und hat Konsequenzen für die Leistung. Microsoft Treiber ergab etwa 20% performance-Gewinne allein, wenn wir ersetzt jTDS. In einigen sehr speziellen Umständen jTDS besser abschneidet und wir verwenden es für diesen. Es ist nicht eine Allgemeine Lösung und in der Regel nicht die Mühe Wert.
Vor Jahren Microsoft vernachlässigt Sie Ihre Java-Treiber und jTDS nahm das Leck. Heutzutage Microsoft setzt mehr Anstrengungen in der offiziellen Java-Treiber. Ich würde Sie für aktuelle Anwendungen. Ich glaube nicht, dass es einen Grund für die Verwendung von jTDS jetzt, aber ich bin nicht mit Ihnen für eine lange Zeit, so dass ich keine aktuellen Erfahrungen.
InformationsquelleAutor Kevin Day
Ich hatte Problem mit der Verbindung zu MS SQL 2005 mit Windows-Authentifizierung. Ich war in der Lage, das Problem zu lösen mit der Hilfe von diesem und anderen Foren. Hier ist was ich getan habe:
Meine Umgebung:
Windows XP-clinet-hosting-Apache Tomcat 6 mit MS SQL 2005-backend auf Windows 2003
InformationsquelleAutor nathan