Posso collegarmi a SQL Server usando l’autenticazione di Windows da webapp Java EE?

Attualmente sto esaminando come effettuare una connessione a un database SQL Server dall’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 file delle proprietà di 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 

Ho zero problemi con la connessione a un database SQL Server in questo modo quando si utilizza 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 c’è 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.

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

Ma se si desidera utilizzare le credenziali dell’utente che esegue Tomcat per connettersi a SQL Server, è ansible utilizzare il driver JDBC di Microsoft. Costruisci 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

guarda a

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

Qual è il formato dell’URL utilizzato da jTDS?

Il formato dell’URL per jTDS è:

 jdbc:jtds:://[:][/][;=[;...]] 

… domain Specifica il dominio Windows in cui eseguire l’autenticazione. Se presente e il nome utente e la password forniti, jTDS utilizza l’autenticazione Windows (NTLM) anziché la solita autenticazione 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 ai server che sono configurati solo per accettare l’autenticazione di Windows.

Se il parametro del dominio è 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 Windows registrate (per farlo funzionare dovrebbe ovviamente essere su Windows, connesso un dominio e anche la libreria SSO installata – consulta README.SSO nella distribuzione su come farlo).

Questo in realtà funziona per me:

Per il README.SSO fornito con la distribuzione jtdsd:

Per far funzionare Single Sign-On, jTDS deve essere in grado di caricare la libreria ntlmauth.dll nativa ntlmauth.dll . Posiziona questa DLL ovunque nel percorso di sistema (definita dalla variabile di sistema PATH ) e sei tutto pronto.

L’ho messo 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 qualcosa 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 una ragione davvero convincente per non farlo, ti suggerisco di abbandonare il driver MS JDBC.

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

Stavo avendo problemi con la connessione a MS SQL 2005 usando 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 la proprietà “domain =” nella stringa jdbc: jtds :: // [:] [/] [; = [; …]]
  3. Installa il file ntlmauth.dll nella directory c: \ windows \ system32 (la registrazione della dll non era richiesta) sul computer del server web.
  4. Modificare l’id quadro di accesso per il servizio Apache Tomcat a un utente di dominio con accesso al server di database SQL (non era necessario per l’utente avere accesso a dbo.master).

Il mio ambiente: Windows XP ospita Apache Tomcat 6 con MS SQL 2005 backend su Windows 2003