Windows 使用具有AD身份验证的IE代理发出HTTP请求

Windows 使用具有AD身份验证的IE代理发出HTTP请求,windows,http,active-directory,ntlm,proxy-authentication,Windows,Http,Active Directory,Ntlm,Proxy Authentication,在企业桌面场景中,用户登录到Active Directory域,我希望我的应用程序使用与Internet Explorer相同的代理发出HTTP请求。问题是,代理需要使用当前登录用户的凭据进行NTLM身份验证,我不知道我的应用程序如何获取该凭据 除了询问用户的密码(我发现了很多解决方案),还有没有其他方法可以正确地执行此操作,比如使用一些本机API?在这种情况下,我对编程语言并不挑剔,如果它在这种情况下工作,我接受它,尽管我更喜欢C/C++。由于您使用的是Windows,并且您使用的是域登录,所

在企业桌面场景中,用户登录到Active Directory域,我希望我的应用程序使用与Internet Explorer相同的代理发出HTTP请求。问题是,代理需要使用当前登录用户的凭据进行NTLM身份验证,我不知道我的应用程序如何获取该凭据


除了询问用户的密码(我发现了很多解决方案),还有没有其他方法可以正确地执行此操作,比如使用一些本机API?在这种情况下,我对编程语言并不挑剔,如果它在这种情况下工作,我接受它,尽管我更喜欢C/C++。

由于您使用的是Windows,并且您使用的是域登录,所以您应该更依赖Kerberos。不管怎样,您现在可以选择以下几个选项:

  • 如果您使用WinHTTP,则必须启用它
  • 在Windows上使用
    libcurl
    ,默认情况下,它将使用SSPI支持进行编译
  • 如果您自己使用套接字,则必须使用
    协商
    包调用SSPI,并根据HTTP自己交换令牌

  • 您选择了哪一个选项?我使用WinINet,将
    INTERNET\u OPEN\u TYPE\u Prefig
    传递到
    InternetOpen
    ,它成功了。我还发现,您可以在.NET中执行类似的操作,但我更喜欢本地方式。