Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O go-mssqldb driver suporta autenticação SQL Server, autenticação integrada do Windows (SSPI), NTLM e Kerberos. Este artigo aborda cada método com exemplos de cadeia de conexão e exemplos de código.
Para autenticação do Microsoft Entra ID, veja autenticação do Microsoft Entra ID.
Escolher um método de autenticação
Use o método mais forte que se encaixe no seu ambiente e plataforma de identidade:
| Prefiro essa ordem | Método | Use-o quando |
|---|---|---|
| 1 | Microsoft Entra ID | Você está conectando ao SQL do Azure e pode usar identidade gerenciada, identidade de carga de trabalho ou outro fluxo do Entra sem armazenar senhas. |
| 2 | Autenticação integrada ao Windows (SSPI) | Seu aplicativo roda no Windows e pode usar a identidade atual do Windows diretamente. |
| 3 | Kerberos | Você está no Linux ou macOS e já tem tickets do Kerberos, keytabs ou um ambiente de domínio gerenciado. |
| 4 | NTLM | Você precisa de autenticação de domínio, mas o Kerberos não está disponível nem é prático. |
| 5 | Autenticação do SQL Server | Você não tem uma opção de identidade integrada e deve usar login e senha SQL. |
Se mais de um método funciona, prefira aquele que evita segredos duradouros e corresponde ao sistema de identidade nativo da plataforma hospedeira.
Autenticação do SQL Server
A autenticação do SQL Server utiliza um nome de login e senha armazenados no SQL Server. Forneça os parâmetros user id e password:
Formato de URL
Note
Para strings de conexão de URL, codifique os caracteres especiais em porcentagem no nome de usuário ou senha. Os nomes de usuário da autenticação do Windows usam %5C como separador de domínio, como sqlserver://DOMAIN%5Cusername:password@host. Em cadeias de conexão ADO e ODBC, use a forma literal DOMAIN\username .
Especifique o nome de usuário e a senha na URL:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true
Formato ADO
Use as chaves user id e password em uma cadeia de conexão no estilo ADO:
server=<server>;user id=<user>;password=<password>;database=AdventureWorks2025;Encrypt=true
Exemplo de código
Conecte-se com autenticação do SQL Server e verifique a conexão:
package main
import (
"database/sql"
"log"
_ "github.com/microsoft/go-mssqldb"
)
func main() {
db, err := sql.Open("sqlserver",
"sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true")
if err != nil {
log.Fatal(err)
}
defer db.Close()
if err = db.Ping(); err != nil {
log.Fatal(err)
}
}
Autenticação integrada ao Windows (SSPI)
No Windows, o driver usa SSPI (Security Support Provider Interface) para autenticar usando as credenciais do usuário atual do Windows. A cadeia de conexão não precisa de nome de usuário ou senha.
sqlserver://<server>?database=AdventureWorks2025&trusted_connection=yes&encrypt=true
Note
A autenticação integrada ao Windows via SSPI funciona apenas quando o aplicativo Go roda no Windows e o usuário atual tem acesso à instância do SQL Server.
Autenticação NTLM
A autenticação NTLM funciona em todas as plataformas (Windows, Linux e macOS). Forneça um nome de usuário e senha qualificados para domínio:
Formato URL NTLM
Codifique a barra invertida em DOMAIN\<user> como %5C:
sqlserver://DOMAIN%5C<user>:<password>@<server>?database=AdventureWorks2025&encrypt=true
Note
No formato de URL, você deve codificar a barra invertida em DOMAIN\<user> como %5C.
Formato NTLM ADO
A barra invertida no nome de usuário sinaliza a autenticação NTLM para o driver:
server=<server>;user id=DOMAIN\<user>;password=<password>;database=AdventureWorks2025;Encrypt=true
O driver detecta a barra invertida no nome de usuário e usa NTLM automaticamente.
Autenticação do Kerberos
A autenticação Kerberos funciona no Linux e macOS quando o sistema possui uma configuração válida de Kerberos. O driver usa o krb5 pacote para autenticação Kerberos. Existem três métodos para fornecer credenciais.
Pré-requisitos
- Um arquivo válido
krb5.conf(caminho padrão:/etc/krb5.conf). - O SQL Server deve ter um Nome Principal de Serviço (SPN) registrado.
Método 1: Arquivo Keytab
Um arquivo keytab contém chaves principais Kerberos criptografadas. Especifique o caminho do arquivo keytab e o domínio do usuário:
sqlserver://<user>@MYREALM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&krb5-keytabfile=/path/to/user.keytab&encrypt=true
Método 2: Cache de credenciais
Use um cache de credenciais Kerberos existente criado por kinit.
sqlserver://<user>@MYREALM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&krb5-credcachefile=/tmp/krb5cc_1000&encrypt=true
Método 3: Credenciais brutas
Forneça a senha diretamente na string de conexão. O driver usa as credenciais fornecidas para realizar a troca de autenticação Kerberos.
sqlserver://<user>@MYREALM:<password>@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&encrypt=true
Parâmetros de Kerberos
| Parâmetro | Padrão | Description |
|---|---|---|
krb5-configfile |
/etc/krb5.conf |
Caminho para o arquivo de configuração Kerberos. |
krb5-realm |
- | Nome do reino de Kerberos, como MYDOMAIN.COM. |
krb5-keytabfile |
- | Caminho para o arquivo keytab. |
krb5-credcachefile |
- | Caminho para o arquivo de cache de credenciais. |
krb5-dnslookupkdc |
true |
Use os registros DNS SRV para localizar o KDC. |
krb5-udppreferencelimit |
1 |
Tamanho máximo da mensagem antes de trocar de UDP para TCP. |
ServerSPN |
- | Sobrescreva o SPN gerado automaticamente. |