Domanda

Attualmente sto studiando come stabilire una connessione a un database SQL Server dalla mia applicazione Web Java EE utilizzando l'autenticazione di Windows anziché l'autenticazione di SQL Server. Sto eseguendo questa app su Tomcat 6.0 e sto utilizzando il driver Microsoft JDBC. Il mio file delle proprietà della connessione ha il seguente aspetto:

dbDriver              = com.microsoft.sqlserver.jdbc.SQLServerDriver
dbUser                = user
dbPass                = password
dbServer              = localhost:1433;databaseName=testDb
dbUrl                 = jdbc:sqlserver://localhost:1433

Non ho problemi con la connessione a un database SQL Server in questo modo quando utilizzo l'autenticazione di SQL Server.

Esiste un modo per recuperare le credenziali dell'autenticazione di Windows dell'utente e utilizzare tale autenticazione per SQL Server?

AGGIORNAMENTO : So che in ASP.net esiste un modo per configurare l'autenticazione di Windows per l'accesso alla webapp, che è esattamente quello che sto cercando, tranne che voglio passare quel token a SQL Server per l'accesso al database.

È stato utile?

Soluzione

Non credo che si possano spingere le credenziali dell'utente dal browser al database (e ha senso? Penso di no)

Ma se si desidera utilizzare le credenziali dell'utente che esegue Tomcat per connettersi a SQL Server, è possibile utilizzare il driver JDBC di Microsoft. Crea il tuo URL JDBC in questo modo:

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

E copia la DLL appropriata nella directory bin di Tomcat (sqljdbc_auth.dll fornita con il driver)

MSDN > Connessione a SQL Server con il driver JDBC > Creazione dell'URL di connessione

Altri suggerimenti

guarda

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

Qual è il formato URL utilizzato da jTDS?

Il formato URL per jTDS è:

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

... dominio Specifica il dominio Windows in cui eseguire l'autenticazione. Se presente e vengono forniti il ??nome utente e la password, jTDS utilizza l'autenticazione Windows (NTLM) anziché la normale autenticazione di SQL Server (ovvero l'utente e la password forniti sono l'utente e la password del dominio). Ciò consente ai client non Windows di accedere a server configurati solo per accettare l'autenticazione di Windows.

Se il parametro domain è presente ma non vengono forniti nome utente e password, jTDS utilizza la sua libreria Single Sign-On nativa e accede con le credenziali dell'utente di Windows registrato (per farlo funzionare, ovviamente, dovrebbe essere su Windows , ha effettuato l'accesso a un dominio e ha anche installato la libreria SSO - consultare README.SSO nella distribuzione su come eseguire questa operazione.

Questo effettivamente funziona per me:

Per il file README.SSO fornito con la distribuzione jtdsd:

Affinché Single Sign On funzioni, jTDS deve essere in grado di caricare la libreria SPPI nativa ntlmauth.dll . Posiziona questa DLL ovunque nel percorso di sistema (definito dalla variabile di sistema PATH ) e sei pronto.

L'ho inserito nella mia cartella jre / bin

Ho configurato una porta dedicata all'istanza del server sql (2302) per alleviare la necessità di un nome di istanza - solo una cosa che faccio. lportal è il mio nome di database.

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

A meno che tu non abbia qualche motivo davvero convincente per non farlo, ti suggerisco di abbandonare il driver MS JDBC.

Utilizza invece il driver jtds jdbc . Leggi il file README.SSO nella distribuzione jtds su come configurare il single sign-on (autenticazione nativa) e dove inserire la DLL nativa per assicurarsi che possa essere caricata dalla JVM.

Ho riscontrato problemi con la connessione a MS SQL 2005 tramite l'autenticazione di Windows. Sono stato in grado di risolvere il problema con l'aiuto di questo e altri forum. Ecco cosa ho fatto:

  1. Installa il driver JTDS
  2. Non utilizzare il " dominio = " proprietà nella stringa jdbc: jtds :: // [:] [/] [; = [; ...]]
  3. Installa il file ntlmauth.dll nella directory c: \ windows \ system32 (non è richiesta la registrazione della dll) sul computer del server web.
  4. Modifica l'identità di accesso per il servizio Apache Tomcat in un utente di dominio con accesso al server di database SQL (non era necessario che l'utente avesse accesso a dbo.master).

Il mio ambiente: Clinet Windows XP che ospita Apache Tomcat 6 con back-end MS SQL 2005 su Windows 2003

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top