Autenticação NTLM com credenciais do sistema em solicitações HTTP Go
Como desenvolvedor, você pode encontrar cenários em que precisa fazer solicitações HTTP e autenticar usando as credenciais do sistema do usuário que executa seu aplicativo. Em ambientes Windows, isso pode ser feito usando a autenticação NTLM (Negotiate Token Level Message). Embora existam soluções disponíveis em C# e Python, a implementação em Go é menos direta.
Solução com Go-ole
Depois de pesquisar, descobrimos que o A biblioteca go-ole fornece acesso à interface WinHTTPRequest, que pode ser utilizada para realizar autenticação NTLM com credenciais do sistema. Veja como fazer isso:
package main
import (
"fmt"
ole "github.com/go-ole/go-ole"
"github.com/go-ole/go-ole/oleutil"
)
func main() {
ole.CoInitialize(0)
defer ole.CoUninitialize()
unknown, _ := oleutil.CreateObject("WinHTTP.WinHTTPRequest.5.1")
request, _ := unknown.QueryInterface(ole.IID_IDispatch)
oleutil.CallMethod(request, "SetAutoLogonPolicy", 0)
oleutil.CallMethod(request, "Open", "GET", "http://example.com", false)
oleutil.CallMethod(request, "Send")
resp := oleutil.MustGetProperty(request, "ResponseText")
fmt.Println(resp.ToString())
}
Este código inicializa a biblioteca ole e cria uma instância WinHTTPRequest. O método SetAutoLogonPolicy é chamado para habilitar o uso de credenciais do sistema. Em seguida, a solicitação é enviada com os métodos Open e Send. Por fim, o texto de resposta é obtido usando a propriedade ResponseText.
Conclusão
Usando a biblioteca go-ole, você pode aproveitar a interface WinHTTPRequest para realizar a autenticação NTLM com o sistema credenciais em Go, fornecendo uma abordagem perfeita para solicitações HTTP em ambientes Windows.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3