Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Microsoft JDBC Driver per SQL Server consente a un'applicazione di usare la proprietà di connessione authenticationScheme per indicare che la connessione a un database deve essere effettuata usando l'autenticazione NTLM v2.
Per l'autenticazione NTLM vengono usate anche le proprietà seguenti:
- domain = domainName (facoltativo)
- user = userName
- password = password
- integratedSecurity = true
Ad eccezione di domain, le altre proprietà sono obbligatorie. Nel caso in cui non siano presenti, il driver genera un errore quando viene usata la proprietà authenticationScheme di NTLM.
Per altre informazioni sulle proprietà di connessione, vedere Impostazione delle proprietà delle connessioni. Per altre informazioni sul protocollo di autenticazione NTLM di Microsoft, vedere Microsoft NTLM.
Osservazioni:
Vedere la sezione: Sicurezza di rete: livello di autenticazione di LAN Manager per la descrizione delle impostazioni di SQL Server, che controllano il comportamento dell'autenticazione NTLM.
Registrazione
È stato aggiunto un nuovo logger per supportare l'autenticazione NTLM: com.microsoft.sqlserver.jdbc.internals.NTLMAuthentication. Per ulteriori informazioni, vedere Tracciamento del funzionamento del driver.
Origine dati
Quando si usa un'origine dati per creare connessioni, le proprietà NTLM possono essere impostate a livello di codice usando setAuthenticationScheme, setDomain e, facoltativamente, setServerSpn.
SQLServerDataSource ds = new SQLServerDataSource();
ds.setServerName("<server>");
ds.setPortNumber(1433); // change if necessary
ds.setIntegratedSecurity(true);
ds.setAuthenticationScheme("NTLM");
ds.setDomain("<domainName>");
ds.setUser("<userName>");
ds.setPassword("<password>");
ds.setDatabaseName("<database>");
ds.setServerSpn("<serverSpn");
try (Connection c = ds.getConnection(); Statement s = c.createStatement();
ResultSet rs = s.executeQuery("select auth_scheme from sys.dm_exec_connections where session_id=@@spid")) {
while (rs.next()) {
System.out.println("Authentication Scheme: " + rs.getString(1));
}
}
Nomi dell'entità servizio
Il nome dell'entità servizio (SPN) è il nome tramite il quale un client identifica in modo univoco un'istanza di un servizio.
È possibile specificare l'SPN tramite la proprietà di connessione serverSpn, oppure lasciare che il driver lo generi (opzione predefinita). Questa proprietà è nel formato: "MSSQLSvc/fqdn:port@REALM", dove fqdn è il nome di dominio completo, port è il numero di porta e REALM è il realm di SQL Server in lettere maiuscole. La parte relativa al realm di questa proprietà è facoltativa, poiché il realm predefinito coincide con quello del Server.
Ad esempio, il nome principale del servizio (SPN) potrebbe avere questo aspetto: "MSSQLSvc/some-server.zzz.corp.contoso.com:1433"
Per ulteriori informazioni sui nomi dell'entità servizio (SPN), vedere:
Nota
L'attributo di connessione serverSpn è supportato solo da Microsoft JDBC Driver 4.2 e versioni successive.
Per le versioni precedenti alla 6.2 del driver JDBC, è necessario impostare serverSpn in modo esplicito. A partire dalla versione 6.2, il driver può compilare serverSpn per impostazione predefinita, sebbene sia possibile usare serverSpn in modo esplicito.
Rischi per la sicurezza
Il protocollo NTLM è un protocollo di autenticazione obsoleto con diverse vulnerabilità, che rappresentano un rischio per la sicurezza. Si basa su uno schema crittografico debole ed è vulnerabile agli attacchi. Il protocollo NTLM è stato sostituito da Kerberos, che è molto più sicuro e consigliato. L'autenticazione NTLM deve essere usata solo in un ambiente attendibile sicuro oppure quando non è possibile usare Kerberos.
Microsoft JDBC Driver per SQL Server supporta solo NTLM v2, che offre alcuni miglioramenti per la sicurezza rispetto al protocollo v1 originale. È anche consigliabile usare la crittografia TLS per una maggiore sicurezza.
Per altre informazioni sulla connessione con la crittografia, vedere:
Nota
Per la versione 7.4, l'abilitazione di entrambe, protezione estesa e crittografia, non è supportata.