是否有人通过使用Indy(10.XX)组件通过使用NTLM身份验证的Squid代理服务器设置成功连接到https://download.dot?使用带Indy组件的NTLM身份验证连接到Squid服务器
我可以成功连接到http位置,但是使用https Indy会返回EAbort错误。
此外,如果我使用FreeProxy作为代理服务器(使用NTLM身份验证),则可以同样访问http/https。但是Squid NTLM + https不起作用?有人得到这个工作?
感谢 雷尔
是否有人通过使用Indy(10.XX)组件通过使用NTLM身份验证的Squid代理服务器设置成功连接到https://download.dot?使用带Indy组件的NTLM身份验证连接到Squid服务器
我可以成功连接到http位置,但是使用https Indy会返回EAbort错误。
此外,如果我使用FreeProxy作为代理服务器(使用NTLM身份验证),则可以同样访问http/https。但是Squid NTLM + https不起作用?有人得到这个工作?
感谢 雷尔
我在这里
1 - 首先,确保你已经更新Indy的来源。
2 - 从这里Indy SLL DLLS下载SSL的dll,把他们在您的应用程序输出
3 - 确保您有连接到TidHttp
IOHandler
属性与后续的性能TIdSSLIOHandlerSocketOpenSSL
配置:
SSLOptions.Method := sslvSSLv23;
SSLOptions.Mode := sslmUnassigned;
OnVerifyPeer := SSLIOHandlerVerifyPeer;
SSLOptions.VerifyMode := [sslvrfPeer];
SSLOptions.VerifyDepth := 2;
4 - 写此事件:
function SSLIOHandlerVerifyPeer(Certificate: TIdX509; AOk: Boolean; ADepth, AError: Integer): Boolean;
begin
Result := True;
end;
5 - 包括这些单元T Ø您的使用条款:
IdAuthentication, IdAuthenticationDigest, IdAuthenticationNTLM
6 - 的TidHttp.OnProxyAuthorization
事件设置为这样:
procedure IdHTTPProxyAuthorization(Sender: TObject; Authentication: TIdAuthentication; var Handled: Boolean);
begin
Handled := False;
end;
7 - 设置这些属性:
IndyHttpClient.HTTPOptions := IndyHttpClient.HTTPOptions + [hoKeepOrigProtocol] + [hoInProcessAuth];
IndyHttpClient.ProtocolVersion := pv1_1;
IndyHttpClient.ProxyParams.ProxyServer := 'you proxy address here'
IndyHttpClient.ProxyParams.ProxyPort := 8080;
IndyHttpClient.ProxyParams.ProxyUsername := 'your proxy username here';
IndyHttpClient.ProxyParams.ProxyPassword := 'your proxy psw here';
现在你是好去。此代码还可以与Microsoft ISA Server一起使用。如果你想要我,我可以发送给你我的组件的完整源代码。我不会在这里发布它,因为它是用葡萄牙语写的(除非有人说它可以发布)。
你可以在这里发布代码吗?我需要使用Indy 10进行身份验证(不需要SSL)。我坚持了两天。 – CyprUS 2013-04-26 07:05:29
我们在Indy论坛上讨论了这个讨论。您正在获得EAbort,因为Squid服务器并不总是向Indy的HTTP请求发送身份验证质询。 – 2010-05-31 18:43:59
我有一个工作得很好的代码。我花了一段时间才明白为什么Indy不能处理对Squid的请求。但是我现在没有资源,明天我会回到这个帖子并发布一个样本。 – 2011-03-17 02:24:22