当前位置: 首页 > 面试题库 >

Go HTTP NTLM请求中的Windows系统凭据

毛景曜
2023-03-14
问题内容

我正在寻找使用Windows用户调用应用程序的系统凭据在Go HTTP请求中进行NTLM身份验证的阻力最小的路径。

在C#/。NET中,我将能够通过

WebRequest request = WebRequest.Create(url);
request.Credentials = CredentialCache.DefaultCredentials;
WebResponse response = request.GetResponse();
Stream receiveStream = response.GetResponseStream();

在Python中,可以通过以下方式获得等效结果

import win32com.client
h = win32com.client.Dispatch('WinHTTP.WinHTTPRequest.5.1')
h.SetAutoLogonPolicy(0)
h.Open('GET', url, False)
h.Send()

但我无法找到有关如何在Go中执行相同操作的任何资源。我当然可以使用一个库进行NTLM身份验证,并手动提供用户名/密码,但是这里的目标是避免将它们输入。


问题答案:

在进一步深入研究之后,看起来go-ole可以像WinHTTPRequest问题中的Python示例一样被利用。忽略所有错误捕获,

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


 类似资料:
  • 响应事件 function onResponse(Request $request,Response $response); 在任何的控制器响应结束后,均会执行该事件,该事件预留于做分析记录。例如结合onRequest事件做慢日志记录。 function onRequest(Request $request, Response $response) { // TODO: Implement

  • 请求分发事件 function onDispatcher(Request $request,Response $response,$targetControllerClass,$targetAction); HTTP请求进来后,easySwoole会对请求进行解析以及分发,当找到对应的控制器后将会执行本事件 注意: 如果请求无法解析到对应的控制器,或控制器不是继承自AbstractControll

  • 收到请求事件 function onRequest(Request $request,Response $response); 当easySwoole收到任何的HTTP请求时,均会执行该事件。该事件可以对HTTP请求全局拦截。 $sec = new Security(); if($sec->check($request->getRequestParam())){ $response->wri

  • 我在android中使用改型,GsonConverterFactory是一个转换器。 我想用身体发送POST请求。 path是附加基本URL的URL。 当我在父类引用(MasterRequest)中发送子类(“用户”)对象时,转换器显示为空json;"{}". 但是当我发送用户类对象到下面的注册用户方法,然后它工作正常。 如何在父类实例中发送子类对象以生成请求正文?

  • 我创建了一个使用Youtube api的python应用程序(因此示例是用python编写的,但这并不重要,概念应该是相同的)。我设法让它在我可以连接和调用api的地方工作。然而,当我连接到api时,我必须定义一个流来检查凭证存储文件是否存在。如果没有,那么我必须使用流手动登录。在登录文件(main.py-oauth2.json)后,用令牌创建。我希望能够下载凭据,而不必手动登录。我希望有一种方法

  • 本文向大家介绍Unix和Windows中的系统调用,包括了Unix和Windows中的系统调用的使用技巧和注意事项,需要的朋友参考一下 进程和操作系统之间的接口由系统调用提供。通常,系统调用可用作汇编语言说明。它们也包含在汇编级程序员使用的手册中。 Unix系统调用 Unix中的系统调用用于文件系统控制,过程控制,进程间通信等。只能通过这些系统调用来访问Unix内核。通常,系统调用类似于函数调用,