1. Auch wenn Du das zielführend findest, reicht es eben genau bei Digest-Auth NICHT aus, wenn man nur den Teil NACH dem Empfang der Nonce (also NACH dem ersten Versuch, der mit 401 enden SOLL) vorzeigt. Denn in dieser Antwort stecken schon die ersten, entscheidenden Informationen, WIE der Client genau bei der nächsten Antwort vorgehen soll. Daher ist auch diese erste Antwort schon von immenser Bedeutung und der Dissector, den Du auf die Daten angesetzt hast, schneidet offenbar auch noch Daten vom
Authorization
-Header ab - jedenfalls sieht die "Liste" darunter dann deutlich länger aus, als die jeweilige Zeile und auch das "truncated" ist ja nicht zu übersehen.
2. Ich sehe durchaus heftige Unterschiede in den
Authorization
-Versuchen ... bei AVM ist da ja offensichtlich noch eine "client nonce" (
cnonce
) im Spiel. Was das ist, findet man im entsprechenden RFC (
RFC 2617) und dann stellt sich auch heraus, daß dieser Wert in die Berechnung der
response
mit eingeht. Wenn der Server also ERWARTEN sollte, daß da ein entsprechender Wert für
cnonce
existiert und schon der fehlt, kann das leicht die nächste Hürde bei einer weiteren Verarbeitung sein.
3. Ich weiß nicht genau, wie exakt die Python-Library die RFC-Vorschriften befolgt ... ggf. gibt es ja irgendwo einen Parameter für die
HTTPDigestAuth
-Klasse, mit dem man die Verwendung einer
cnonce
erzwingen kann.
4. Aber auch dann gibt es noch Unterschiede im
Authorization
-Header ... bis hin zu Anführungszeichen, die bei AVM auch fehlen, wenn der Wert "simple" ist. Ob und wie das dann alles wieder in Python so nachzubauen ist (und erst recht, ob das alles erforderlich ist, denn niemand weiß ja, was AVM da für einen Parser für diesen Header verwendet), weiß ich aber auch nicht. Nur sehe ich dann schon noch GEWALTIGE Unterschiede zwischen dem originalen Request und Deinem Nachbau, selbst mit den (hier für mich unnützen) Dissectoren für das HTTP-Protokoll (da das alles "Text" ist, reichen da nach meiner Ansicht schon die "reinen Textzeilen" und die sind dann sogar wieder übersichtlicher in meinen Augen).
EDIT:
5. Ich glaube erst mal nicht, daß es an irgendwelchen anderen Header-Zeilen liegt (also auch nicht an einem
Accept-Encoding
o.ä.) ... ein
401
ist da schon ziemlich "genau" und wenn AVM da nicht gezielt Verwirrung stiften will, wird es wohl mit
Authorization
immer noch nicht klappen.
EDIT2:
Hmm ... ich war dann doch noch neugierig und habe mal in die Library gesehen. Nach dem, was ich dort lese (
https://docs.python-requests.org/en/master/_modules/requests/auth/#HTTPDigestAuth), sollte eigentlich bei
qop="auth"
auch eine
cnonce
verwendet werden. Stellt sich die Frage, warum das bei Dir offenbar nicht der Fall ist - ich sehe auch keinen zusätzlichen Parameter o.ä. - ein
qop=auth
im
WWW-Authenticate
-Header der
401
-Message (die ja fehlt) sollte das entsprechend triggern.