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