ホームページ >バックエンド開発 >Golang >Go HTTP リクエストでシステム資格情報を使用して NTLM 認証を実現するにはどうすればよいですか?

Go HTTP リクエストでシステム資格情報を使用して NTLM 認証を実現するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 02:43:291121ブラウズ

How to Achieve NTLM Authentication with System Credentials in Go HTTP Requests?

Go HTTP リクエストでのシステム資格情報を使用した NTLM 認証

開発者として、HTTP リクエストを作成して認証する必要があるシナリオに遭遇する可能性があります。アプリケーションを実行しているユーザーのシステム資格情報を使用します。 Windows 環境では、これは NTLM (Negotiate Token Level Message) 認証を使用して実行できます。 C# と Python で利用可能なソリューションはありますが、Go での実装はそれほど単純ではありません。

Go-ole によるソリューション

調査した結果、 go-ole ライブラリは、システム資格情報を使用して NTLM 認証を実行するために利用できる WinHTTPRequest インターフェイスへのアクセスを提供します。これを実現する方法は次のとおりです。

<code class="go">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())
}</code>

このコードは、ole ライブラリを初期化し、WinHTTPRequest インスタンスを作成します。 SetAutoLogonPolicy メソッドは、システム資格情報の使用を有効にするために呼び出されます。次に、リクエストは Open メソッドと Send メソッドを使用して送信されます。最後に、ResponseText プロパティを使用して応答テキストを取得します。

結論

go-ole ライブラリを使用すると、WinHTTPRequest インターフェイスを利用してシステムとの NTLM 認証を実行できます。 Go の認証情報を使用して、Windows 環境での HTTP リクエストに対するシームレスなアプローチを提供します。

以上がGo HTTP リクエストでシステム資格情報を使用して NTLM 認証を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。