使用带有Indy组件的NTLM auth连接到Squid服务器

时间:2010-05-27 13:52:21

标签: delphi indy indy10

是否有人使用Indy(10.XX)组件通过使用NTLM身份验证的Squid代理服务器设置成功连接到 https 位置?

我可以成功连接到http位置,但是使用https Indy会返回EAbort错误。

另外,如果我使用FreeProxy作为代理服务器(使用NTLM身份验证),我也可以同样访问http / https。但是Squid NTLM + https不起作用?有人让这个工作吗?

由于 雷尔

1 个答案:

答案 0 :(得分:1)

我在这里

1 - 首先,确保你已经更新了indy的来源。

2 - 从此处Indy SLL DLLS下载SSL dll并将其放入您的应用输出

3 - 确保TIdSSLIOHandlerSocketOpenSSLTidHttpIOHandler SSLOptions.Method := sslvSSLv23; SSLOptions.Mode := sslmUnassigned; OnVerifyPeer := SSLIOHandlerVerifyPeer; SSLOptions.VerifyMode := [sslvrfPeer]; SSLOptions.VerifyDepth := 2; 属性相关联且已配置以下属性:

function SSLIOHandlerVerifyPeer(Certificate: TIdX509; AOk: Boolean; ADepth, AError:    Integer): Boolean;
begin
  Result := True;
end;

4 - 写下此活动:

IdAuthentication, IdAuthenticationDigest, IdAuthenticationNTLM

5 - 将这些单位包括在您的使用条款中:

TidHttp.OnProxyAuthorization

6 - 将procedure IdHTTPProxyAuthorization(Sender: TObject; Authentication: TIdAuthentication; var Handled: Boolean); begin Handled := False; end; 事件设置为:

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';

7 - 设置这些属性:

{{1}}

现在你很高兴。此代码也适用于Microsoft ISA Server。如果你想要我,我可以发给我组件的完整源代码。我不会在这里发布,因为它是用葡萄牙语写的(除非有人说它可以发布)。