Thread LWP::UserAgent und 401 Unauthorized (45 answers)
Opened by bianca at 2013-06-12 21:07

bianca
 2013-06-14 07:36
#168182 #168182
User since
2009-09-13
7016 Artikel
BenutzerIn

user image
2013-06-13T16:02:20 jan
Hast Du mal geschaut, was genau LWP denn bekommt und sendet und das verglichen mit dem, was Firefox bekommt und sendet (LiveHTTPHeader o.ä.)?


So, das habe ich mal gemacht und sieht so aus (Benutzername und IP durch *** unkenntlich gemacht):
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Firefox:
Request:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-us,en;q=0.7,de;q=0.3
Authorization: Digest username="***", realm="dev.sepatools.eu", nonce="5086e8af66288573136d73c684cf0893", uri="/supported_banks.json", algorithm=MD5, response="48f4b5e0da74b634edad0b07f4184e4c", opaque="94619f8a70068b2591c2eed622525b0e", qop=auth, nc=00000001, cnonce="00847946a84d3c8a"
Connection: keep-alive
Host: dev.sepatools.eu
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0
Response:
Access-Control-Allow-Cred...: true
Access-Control-Allow-Head...: *
Access-Control-Allow-Meth...: POST,GET,PUT,DELETE,HEAD
Access-Control-Allow-Orig...: *
Access-Control-Max-Age: 604800
Connection: Keep-Alive
Content-Encoding: gzip
Content-Length: 284
Content-Type: application/json; charset=utf-8
Date: Fri, 14 Jun 2013 05:30:00 GMT
Keep-Alive: timeout=15, max=99
Server: Apache/2.2.16 (Debian)
Vary: Accept-Encoding
X-Powered-By: PHP/5.3.3-7+squeeze15

###############################################################################
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Script:
GET https://dev.sepatools.eu/supported_banks.json
User-Agent: libwww-perl/6.05

(no content)
HTTP/1.1 401 Unauthorized
Connection: close
Date: Fri, 14 Jun 2013 04:29:46 GMT
Server: Apache/2.2.16 (Debian)
Vary: Accept-Encoding
WWW-Authenticate: Digest realm="dev.sepatools.eu", domain="/", qop=auth, algorithm=MD5, nonce="80f59644e94dca775174dee611ee1543", opaque="94619f8a70068b2591c2eed622525b0e"
Content-Length: 58
Content-Type: text/html
Client-Date: Fri, 14 Jun 2013 04:29:45 GMT
Client-Peer: ***
Client-Response-Num: 1
Client-SSL-Cert-Issuer: /C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Class 3 Primary Intermediate Server CA
Client-SSL-Cert-Subject: /description=D77lqt6MXs1120Z8/C=DE/ST=Niedersachsen/L=Hasbergen/O=Theano GmbH/CN=*.sepatools.eu/emailAddress=postmaster@sepatools.eu
Client-SSL-Cipher: DHE-RSA-AES256-SHA
Client-SSL-Warning: Peer certificate not verified
X-Powered-By: PHP/5.3.3-7+squeeze15

HTTP Digest Authentication required for "dev.sepatools.eu"
GET https://dev.sepatools.eu/supported_banks.json
Authorization: Digest username="***", realm="dev.sepatools.eu", qop="auth", algorithm="MD5", uri="/supported_banks.json", nonce="80f59644e94dca775174dee611ee1543", nc="00000001", cnonce="51ba9c39", response="cbb67ea985fde861e33fd144e77d601d", opaque="94619f8a70068b2591c2eed622525b0e"
User-Agent: libwww-perl/6.05

(no content)
HTTP/1.1 401 Unauthorized
Connection: close
Date: Fri, 14 Jun 2013 04:29:46 GMT
Server: Apache/2.2.16 (Debian)
Vary: Accept-Encoding
WWW-Authenticate: Digest realm="dev.sepatools.eu", domain="/", qop=auth, algorithm=MD5, nonce="80f59644e94dca775174dee611ee1543", opaque="94619f8a70068b2591c2eed622525b0e"
Content-Length: 58
Content-Type: text/html
Client-Date: Fri, 14 Jun 2013 04:29:45 GMT
Client-Peer: ***
Client-Response-Num: 1
Client-SSL-Cert-Issuer: /C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Class 3 Primary Intermediate Server CA
Client-SSL-Cert-Subject: /description=D77lqt6MXs1120Z8/C=DE/ST=Niedersachsen/L=Hasbergen/O=Theano GmbH/CN=*.sepatools.eu/emailAddress=postmaster@sepatools.eu
Client-SSL-Cipher: DHE-RSA-AES256-SHA
Client-SSL-Warning: Peer certificate not verified
X-Powered-By: PHP/5.3.3-7+squeeze15

HTTP Digest Authentication required for "dev.sepatools.eu"
Fehler: "401 Unauthorized"


Mir sind jetzt folgende Unterschiede aufgefallen:

1. Firefox macht scheinbar nur einen Request, LWP hingegen scheint zwei zu machen. Den ersten von LWP für die Realm-Abfrage habe ich hier im Log garnicht drin, sonst wären es 3 aber der erste zählt ja nicht, weil er später rausfliegt.
Weiß jemand, ob das so richtig ist?

2. In der Zeile "Authorization" sind die Werte für "nonce", "cnonce" und "Response". Die sind aber - wenn ich RFC 2617 richtig verstanden habe - spezifisch pro Request anders.

Ich komme nicht weiter.
Sieht jemand einen Fehler?
10 print "Hallo"
20 goto 10

View full thread LWP::UserAgent und 401 Unauthorized