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 go-mssqldb driver suporta autenticação SQL Server, autenticação integrada Windows (SSPI), NTLM e Kerberos. Este artigo aborda cada método com exemplos de cadeia de ligação e exemplos de código.
Para autenticação Microsoft Entra ID, consulte autenticação Microsoft Entra ID.
Escolha um método de autenticação
Use o método mais forte que se adapte ao seu ambiente e plataforma de identidade:
| Prefiro esta ordem | Método | Use-o quando |
|---|---|---|
| 1 | Microsoft Entra ID | Estás a ligar-te ao SQL do Azure e podes usar identidade gerida, identidade de carga de trabalho ou outro fluxo do Entra sem guardar palavras-passe. |
| 2 | Autenticação integrada do Windows (SSPI) | A sua aplicação corre no Windows e pode usar diretamente a identidade atual do Windows. |
| 3 | Kerberos | Estás em Linux ou macOS e já tens tickets Kerberos, keytabs ou um ambiente de domínio gerido. |
| 4 | NTLM | Precisas de autenticação por domínio, mas o Kerberos não está disponível nem é prático. |
| 5 | Autenticação do SQL Server | Não tens uma opção de identidade integrada e tens de usar login e palavra-passe SQL. |
Se mais do que um método funcionar, prefira aquele que evita segredos duradouros e corresponde ao sistema de identidade nativo da plataforma anfitriã.
Autenticação do SQL Server
A autenticação do SQL Server utiliza um nome de login e uma palavra-passe armazenados no SQL Server. Forneça os parâmetros user id e password:
Formato do URL
Note
Para cadeias de ligação de URL, codifique os caracteres especiais com codificação percentual no nome de utilizador ou na palavra-passe. Os nomes de utilizador da autenticação do Windows utilizam %5C como separador de domínio, como sqlserver://DOMAIN%5Cusername:password@host. Em cadeias de ligação ADO e ODBC, use a forma literal DOMAIN\username .
Especifique o nome de utilizador e a palavra-passe na URL:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true
Formato ADO
Utilize as teclas user id e password numa cadeia de ligação no estilo ADO:
server=<server>;user id=<user>;password=<password>;database=AdventureWorks2025;Encrypt=true
Exemplo de código
Ligue-se à autenticação do SQL Server e verifique a ligaçã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 do Windows (SSPI)
No Windows, o driver utiliza o SSPI (Security Support Provider Interface) para autenticar utilizando as credenciais do utilizador atual do Windows. A cadeia de ligação não precisa de nome de utilizador ou palavra-passe.
sqlserver://<server>?database=AdventureWorks2025&trusted_connection=yes&encrypt=true
Note
A autenticação integrada no Windows através do SSPI só funciona quando a aplicação Go corre no Windows e o utilizador 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 utilizador e palavra-passe qualificados para domínio:
Formato URL NTLM
Codifica URL a barra inversa em DOMAIN\<user> como %5C:
sqlserver://DOMAIN%5C<user>:<password>@<server>?database=AdventureWorks2025&encrypt=true
Note
No formato de URL, deve codificar em URL a barra invertida em DOMAIN\<user> como %5C.
Formato NTLM ADO
A barra diagonal no nome de utilizador sinaliza autenticação NTLM ao driver:
server=<server>;user id=DOMAIN\<user>;password=<password>;database=AdventureWorks2025;Encrypt=true
O controlador deteta a barra invertida no nome de utilizador e utiliza automaticamente o NTLM.
Autenticação Kerberos
A autenticação Kerberos funciona no Linux e macOS quando o sistema tem uma configuração válida de Kerberos. O driver utiliza o krb5 pacote para autenticação Kerberos. Existem três métodos para fornecer credenciais.
Pré-requisitos
- Um ficheiro válido
krb5.conf(caminho padrão:/etc/krb5.conf). - O SQL Server deve ter um Nome Principal de Serviço (SPN) registado.
Método 1: ficheiro Keytab
Um ficheiro keytab contém chaves principais Kerberos encriptadas. Especifique o caminho do ficheiro keytab e o domínio do utilizador:
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 uma cache de credenciais Kerberos existente criada 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 palavra-passe diretamente na cadeia de ligação. O controlador utiliza as credenciais fornecidas para efetuar o processo de autenticação do Kerberos.
sqlserver://<user>@MYREALM:<password>@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&encrypt=true
Parâmetros de Kerberos
| Parâmetro | Predefinição | Description |
|---|---|---|
krb5-configfile |
/etc/krb5.conf |
Caminho para o ficheiro de configuração do Kerberos. |
krb5-realm |
- | Nome do reino de Kerberos, como MYDOMAIN.COM. |
krb5-keytabfile |
- | Caminho para o ficheiro keytab. |
krb5-credcachefile |
- | Caminho para o ficheiro de cache de credenciais. |
krb5-dnslookupkdc |
true |
Utilize registos SRV do DNS para localizar o KDC. |
krb5-udppreferencelimit |
1 |
Tamanho máximo da mensagem antes de mudar de UDP para TCP. |
ServerSPN |
- | Anule o SPN gerado automaticamente. |