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 サイトの他の関連記事を参照してください。