Devo supportare più tipi di database per la mia applicazione Web abilitata per tenant. Tra gli altri, ho supportato con successo Microsoft SQL Server, utilizzando la classe net.sourceforge.jtds.jdbc.Driver con una stringa di connessione come "jdbc: jtds: sqlserver: //192.168.1.189: 1433/ApplicationName". Funziona, ma richiede che l'utente definisca esplicitamente un utente nell'istanza di SQL Server e abiliti l'autenticazione di SQL Server.Autenticazione su un'istanza di SQL Server come utente Windows tramite JDBC
Ora, inevitabilmente, i requisiti sono cambiati e dovremmo supportare la connessione a SQL Server tramite l'autenticazione di Windows. Evidentemente ciò richiede una sorta di modifica alla stringa di connessione, poiché il server del data base deve in qualche modo essere in grado di distinguere se le credenziali passate nella connessione del database sono per un utente definito nell'installazione di SQL Server o nel sistema operativo Windows. Ma cos'è?
Operando su consiglio da Internet, se progredito fino all'estensione della stringa di connessione con ;useNTLMv2=true;domain=WORKGROUP
. Che sembra per rendere il server di base di dati consapevoli che voglio per autenticare un utente di Windows, ma l'attuale log-in non riesce con
The login is from an untrusted domain and cannot be used with Windows authentication. (code 18452, state 28000)
ora Im mio test di set-up, sia l'applicazione J2EE e la Le istanze del server SQL sono infatti sulla stessa macchina (anche se in produzione potrebbero non esserlo), e comunque questo computer non è abbastanza affidabile per accedere a se stesso? Evidentemente mi manca una grande parte del puzzle qui. Che cosa si deve fare per convincere un'istanza di SQL Server che l'utente che l'ha avviato può in effetti collegarsi ad esso tramite JDBC?
Modifica
Dal momento che abbiamo già affondato troppo sforzo infruttuoso tentativo di integrare la nostra applicazione web con uno stack completo di Microsoft infrastrutture (SQL Server, Active Directory, Domain Name Service ...), devo limitare questa domanda:
qualcuno sa un modo per accedere a un server installazione SQL con un account utente definito come un "Windows user" via JDBC modulo di un'applicazione J2EE, senza deve utilizzare Active Directory, una macchina Windows che esegue l'applicazione Web e una DLL proprietaria? La taglia è per qualsiasi soluzione di quel sotto-problema. L'intero problema è chiaramente troppo ampio per essere risolto in un post sul forum.
È questo computer un membro di un dominio Active Directory di Windows? Non so molto del driver jTDS ma hai installato il single sign su DLL? Un'altra opzione è il driver Microsoft JDBC, che supporta l'autenticazione di Windows senza SSO. –
No, tutto quello che abbiamo qui sono alcune finestre di sviluppo standalone di Windows. Un collega sta ora esaminando cosa dovremmo fare per stabilire un ambiente Active Directory per noi stessi. In alternativa, comprendo correttamente che con il driver sqljdbc4.jar potrei andare via senza eseguire un controller di dominio localmente? Se è così, preferirei davvero ottenere la connettività semplicemente adattando l'URL e i parametri di connessione. –
Tenere presente che l'esecuzione di SQL Server su un controller di dominio non è supportata. In genere, si utilizza l'autenticazione di Windows solo con AD già disponibile. Se non lo hai, perché non usare solo l'autenticazione SQL? Perché un requisito impone di utilizzare l'autenticazione di Windows senza l'infrastruttura di supporto? –