it-swarm.com.de

Kann ich über die Windows-Authentifizierung von Java EE webapp) aus eine Verbindung zu SQL Server herstellen?

Derzeit wird untersucht, wie eine Verbindung zu einer SQL Server-Datenbank von meiner Java EE-Webanwendung mithilfe der Windows-Authentifizierung anstelle der SQL Server-Authentifizierung hergestellt werden kann. Diese App wird von Tomcat 6.0 ausgeführt Verwenden des Microsoft JDBC-Treibers. Meine Verbindungseigenschaftendatei 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 keine Probleme beim Herstellen einer Verbindung zu einer SQL Server-Datenbank auf diese Weise, wenn die SQL Server-Authentifizierung verwendet wird.

Gibt es eine Möglichkeit, die Anmeldeinformationen der Windows-Authentifizierung des Benutzers abzurufen und dass Authentifizierung für SQL Server zu verwenden?

UPDATE : Ich weiß, dass es in ASP.net eine Möglichkeit gibt, die Windows-Authentifizierung für den Zugriff auf die Webanwendung einzurichten Ich möchte dieses Token an SQL Server für den Zugriff auf die Datenbank weitergeben.

53
karlgrz

Ich glaube nicht, dass man die Benutzeranmeldeinformationen vom Browser in die Datenbank pushen kann (und macht es Sinn? Ich denke nicht)

Wenn Sie jedoch die Anmeldeinformationen des Benutzers verwenden möchten, auf dem Tomcat ausgeführt wird, um eine Verbindung mit SQL Server herzustellen, können Sie den JDBC-Treiber von Microsoft verwenden. Erstellen Sie einfach Ihre JDBC-URL wie folgt:

jdbc:sqlserver://localhost;integratedSecurity=true;

Und kopieren Sie die entsprechende DLL in das bin-Verzeichnis von Tomcat (sqljdbc_auth.dll im Lieferumfang des Treibers enthalten)

MSDN> Herstellen einer Verbindung zu SQL Server mit dem JDBC-Treiber> Erstellen der Verbindungs-URL

76
Jerome Delattre

ansehen

http://jtds.sourceforge.net/faq.html#driverImplementation

Welches URL-Format wird von jTDS verwendet?

Das URL-Format für jTDS lautet:

jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]

... domain Gibt die Windows-Domäne an, in der die Authentifizierung erfolgen soll. Wenn vorhanden und Benutzername und Kennwort angegeben sind, verwendet jTDS die Windows-Authentifizierung (NTLM) anstelle der üblichen SQL Server-Authentifizierung (dh der angegebene Benutzer und das angegebene Kennwort sind der Domänenbenutzer und das Kennwort) ). Auf diese Weise können sich Nicht-Windows-Clients bei Servern anmelden, die nur für die Annahme der Windows-Authentifizierung konfiguriert sind.

Wenn der Parameter domain vorhanden ist, aber kein Benutzername und kein Kennwort angegeben sind, verwendet jTDS seine native Single-Sign-On-Bibliothek und meldet sich mit den Anmeldeinformationen des angemeldeten Windows-Benutzers an (damit dies funktioniert, muss man offensichtlich unter Windows angemeldet sein) eine Domain und auch die SSO-Bibliothek installiert haben - konsultieren Sie dazu README.SSO in der Distribution.

25
opensas

Das funktioniert eigentlich bei mir:

In der README.SSO, die mit der jtdsd-Distribution geliefert wird:

Damit Single Sign On funktioniert, muss jTDS in der Lage sein, die native SPPI-Bibliothek ntlmauth.dll Zu laden. Platzieren Sie diese DLL an einer beliebigen Stelle im Systempfad (definiert durch die Systemvariable PATH), und schon sind Sie fertig.

Ich habe es in meinen jre/bin Ordner gelegt

Ich habe einen Port für die SQL Server-Instanz (2302) konfiguriert, um die Notwendigkeit eines Instanznamens zu verringern - genau das, was ich tue. lportal ist mein Datenbankname.

jdbc.default.url=jdbc:jtds:sqlserver://192.168.0.147:2302/lportal;useNTLMv2=true;domain=mydomain.local
7
Andy

Sofern Sie keinen wirklich zwingenden Grund haben, dies nicht zu tun, schlage ich vor, den MS JDBC-Treiber fallen zu lassen.

Verwenden Sie stattdessen den jtds jdbc-Treiber . Lesen Sie die Datei README.SSO in der jtds-Distribution, um zu erfahren, wie Sie Single-Sign-On (native Authentifizierung) konfigurieren und wo Sie die native DLL) ablegen, um sicherzustellen, dass sie von der JVM geladen werden kann.

5
Kevin Day

Ich hatte Probleme beim Herstellen einer Verbindung mit MS SQL 2005 mithilfe der Windows-Authentifizierung. Ich konnte das Problem mit Hilfe dieses und anderer Foren lösen. Folgendes habe ich getan:

  1. Installieren Sie den JTDS-Treiber
  2. Verwenden Sie die Eigenschaft "domain =" nicht in der Zeichenfolge jdbc: jtds :: // [:] [/] [; = [; ...]]
  3. Installieren Sie die Datei ntlmauth.dll im Verzeichnis c:\windows\system32 (Registrierung der DLL war nicht erforderlich) auf dem Webservercomputer.
  4. Ändern Sie die Anmeldeidentität für den Apache Tomcat-Dienst in einen Domänenbenutzer mit Zugriff auf den SQL-Datenbankserver (der Benutzer musste nicht auf dbo.master zugreifen können).

Meine Umgebung: Windows XP Clinet Hosting Apache Tomcat 6 mit MS SQL 2005 Backend unter Windows 2003

3
nathan