在公司桌面场景中,用户登录到Active Directory域,我希望我的应用程序使用与Internet Explorer相同的代理发出HTTP请求。问题是代理需要使用当前登录用户的凭据进行NTLM身份验证,我不知道我的应用程序是如何获取的。
除了向用户询问他/她的密码(我找到了很多解决方案)之外,是否有正确的方法,比如使用一些原生的API?在这种情况下,我对编程语言并不挑剔,如果它在这种场景中有效,我会接受它,尽管我更喜欢C/C++。
由于您使用的是Windows,并且使用的是域登录,因此您应该依赖Kerberos。不管怎样,你现在有几个选择:
- 如果你使用WinHTTP,你只需要启用它
- 在Windows上使用
libcurl
,默认情况下它将使用SSPI支持进行编译 - 如果您自己使用套接字,则必须使用
Negotiate
包来调用SSPI,并单独交换每个HTTP的令牌