Indy (Delphi) Http Client and Digest Authentication
delphi, delphi-7, http, indy, indy10
Solution
You need to enable the `hoInProcessAuth` flag in the `TIdHTTP.HTTPOptions` property. It is disabled by default. Without that flag, `TIdHTTP.Get()` will not send a second HTTP request specifying the Digest credentials in reply to the server's 401 response. It will simply exit and expect you to handle the 401 response and send a new request yourself as needed.
Problem
I'm trying to communicate with a LAN (http://) server that needs digest authentication. ``` uses IdHttp, IdAuthenticationDigest; ... begin IdHttp1 := TIdHttp.Create(nil); try IdHttp1.Request.Username := 'xxx'; IdHttp1.Request.Password := 'xxx'; Result := IdHttp1.Get(URL) finally idHttp1.Free; end; end; ``` Unfortunately I get a HTTP/1.0 401 Unauthorized as IdHttp1.ResponseText from the server. Both Firefox and Chrome connect fine if I enter the username and password. I've the latest Indy 10 from SVN and Delphi 7. The http header of the server (192.168.1.10 on LAN): ``` Connecting... Resolving hostname dm7020hd. Connecting to 192.168.1.10. Connected. Server: webserver/1.0 Date: Thu, 31 Jan 2013 11:28:32 GMT WWW-Authenticate: Digest algorithm="MD5", realm="Forbidden", qop="auth", opaque="7edfc2c756ad1f795651f15f88c32b25", nonce="d2ef913b753b3b6ad8878b34b93cfc5a" Content-Type: text/html Cache-Control: no-store, no-cache, must-revalidate Expires: Sat, 10 Jan 2000 05:00:00 GMT Content-Length: 15 Last-Modified: Thu, 31 Jan 2013 11:28:32 GMT ETag: "753868328" Connection: close Disconnected ``` I've googled alot about this problem and apparently a lot of people have trouble with indy authentication (does it work at all?).