2015-06-18 11 views
9

Ehi, ho problemi di connessione a un server SQL con codice Java in esecuzione su Linux.Connessione a SQL Server da Linux tramite JDBC utilizzando integratedSecurity (autenticazione Windows)?

Se ho impostato integratedSecurity = true, quindi il codice Java non riesce con il seguente errore:

WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path 
com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication. ClientConnectionId:b030b480-453d-4007-8151-a552150f74cd 

che ha senso come non ci sarà alcun file sqljdbc.dll su Linux.

Ma se ho impostato integratedSecurity = false, allora ottengo il seguente errore:

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'IT_DEV_USER'. 

Quindi qualcuno sa come posso connettersi a SQL Server con integratedSecurity impostato su false? (Si noti che non posso anche collegare quando il codice Java è in esecuzione su Windows quando integratedSecurity è impostata su false.

In caso contrario, c'è un modo posso ottenere integratedSecurity a lavorare su Linux?

risposta

-2

Non è possibile utilizzare funzionalità IntegratedSecurity dal sistema Linux, in quanto legata al sistema Windows e utilizza l'autenticazione Windows. Tuttavia, se si abilita sia la modalità di autenticazione di SQL Server e Windows sul server SQL, è possibile creare un accesso, mappare il database corrispondente e utilizzarlo in java da Linux

Per abilitare l'autenticazione di SQL Server:

  1. Fare clic destro sul server in studio gestione
  2. Proprietà
  3. Security
  4. autenticazione
  5. Server -> SQL Server e la modalità di autenticazione di Windows
+0

Ehi, ho provato questo e ancora non funziona. Qualche idea? – fulhamHead

+1

Dovresti essere in grado di utilizzare l'autenticazione Kerberos integrata nel driver JDBC di SQL Server. –

3

Se si desidera utilizzare la protezione integrata e l'utilizzo di driver JDBC 4.0 o superiore, aggiungete quanto segue nella stringa di connessione jdbc.

integratedSecurity=true;authenticationScheme=JavaKerberos 

Maggiori informazioni: http://blogs.msdn.com/b/psssql/archive/2015/01/09/jdbc-this-driver-is-not-configured-for-integrated-authentication.aspx

+2

Avete fatto con successo questo? Sto ottenendo un Impossibile ottenere il nome principale per l'errore di autenticazione ... – fulhamHead

+0

Prova a specificare il nome dell'istanza, dovrebbe correggerlo. https://msdn.microsoft.com/en-us/library/ms378428.aspx –

+1

Per quanto ne so, aggiungere semplicemente che kerberos deve essere usato non è sufficiente: devi avere kerberos configurato correttamente, e devi avere un biglietto kerberos dall'AD. –

0

Aggiunta authenticationScheme=JavaKerberos per me funziona in Linux, ma assicurarsi di rimuovere integratedSecurity=true dal momento che non si utilizza Windows.

0

Se non volete il collegamento di sicurezza integrata, quindi impostare tale parametro su false e invece di fornire utente e la password nel connURL come di seguito:

String connectionUrl = "jdbc:sqlserver://localhost:port;databaseName=DB_NAME;integratedSecurity=false;user=login_user;password=login_pwd;";