「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go HTTP リクエストでシステム資格情報を使用して NTLM 認証を実現するにはどうすればよいですか?

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

2024 年 11 月 12 日に公開
ブラウズ:150

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 インターフェイスへのアクセスを提供します。これを実現する方法は次のとおりです:

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())
}

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

結論

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

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3