Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Microsoft JDBC Driver para SQL Server permite que uma aplicação utilize a propriedade de ligação authenticationScheme para indicar que pretende ligar-se a uma base de dados utilizando a autenticação NTLM v2.
As seguintes propriedades também são usadas para autenticação NTLM:
- domain = domainName (opcional)
- user = userName
- password = password
- integratedSecurity = true
Além de domínio, as outras propriedades são obrigatórias; o controlador emitirá um erro se alguma estiver em falta quando for utilizada a propriedade authenticationScheme NTLM.
Para obter mais informações sobre as propriedades da conexão, consulte Definindo as propriedades da conexão. Para obter mais informações sobre o protocolo de autenticação Microsoft NTLM, consulte Microsoft NTLM.
Observações
Consulte Segurança de rede: nível de autenticação do LAN Manager para obter uma descrição das configurações do SQL Server, que controlam o comportamento da autenticação NTLM.
Exploração Florestal
Um novo logger foi adicionado para oferecer suporte à autenticação NTLM: com.microsoft.sqlserver.jdbc.internals.NTLMAuthentication. Para obter mais informações, consulte Rastrear o funcionamento do controlador.
Fonte de dados
Ao usar uma fonte de dados para criar conexões, as propriedades NTLM podem ser programaticamente definidas usando setAuthenticationScheme, setDomain e (opcionalmente) 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));
}
}
Nomes principais de serviço
Um SPN (nome da entidade de serviço) é o nome pelo qual um cliente identifica exclusivamente uma instância de um serviço.
Você pode especificar o SPN usando a propriedade de conexão serverSpn ou deixar o driver criá-lo para você (o padrão). Essa propriedade está na forma de: "MSSQLSvc/fqdn:port@REALM", onde fqdn é o nome de domínio totalmente qualificado, porta é o número da porta e REALM é o reino do SQL Server em letras maiúsculas. A parte do domínio desta propriedade é opcional, pois o domínio predefinido é o mesmo que o domínio do Servidor.
Por exemplo, seu SPN pode se parecer com: "MSSQLSvc/some-server.zzz.corp.contoso.com:1433"
Para obter mais informações sobre nomes de entidade de serviço (SPNs), consulte:
Observação
O atributo de conexão serverSpn só é suportado pelo Microsoft JDBC Drivers 4.2 e superior.
Antes da versão 6.2 do driver JDBC, você precisaria definir explicitamente o serverSpn. A partir da versão 6.2, o driver será capaz de construir o serverSpn por padrão, embora se possa usar serverSpn explicitamente também.
Riscos de segurança
O protocolo NTLM é um protocolo de autenticação antigo com várias vulnerabilidades, que representam um risco de segurança. Baseia-se num esquema criptográfico fraco e é vulnerável a ataques. O NTLM foi substituído pelo Kerberos, que é muito mais seguro e recomendado. A autenticação NTLM só deve ser usada em um ambiente seguro e confiável ou quando o Kerberos não puder ser usado.
O Microsoft JDBC Driver para SQL Server suporta apenas NTLM v2, que tem algumas melhorias de segurança em relação ao protocolo v1 original. Também é recomendado o uso da criptografia TLS para aumentar a segurança.
Para obter mais informações sobre como se conectar com criptografia, consulte:
Observação
Para a versão 7.4, não há suporte para habilitar a Proteção Estendida e a Criptografia.