Klient nie może wybrać mechanizmu uwierzytelniania na podstawie samego numeru statusu. Odpowiedź proxy musi opisywać, co akceptuje.

HTTP wymaga, aby proxy generujące 407 wysłało wyzwanie Proxy-Authenticate. Dla usługi Basic prosty przykład to:

HTTP/1.1 407 Proxy Authentication Required
Proxy-Authenticate: Basic realm="Office proxy"

Status liczbowy, nazwa nagłówka i składnia właściwa dla schematu są równie ważne. Strona błędu z marką i słowem authentication w treści nie zastępuje nagłówka. Własne implementacje muszą także wysyłać pełną odpowiedź HTTP 407, wraz z terminatorem nagłówka i obramowaniem treści.

Sprawdź odpowiedź, która dotarła do tego klienta

Zarejestruj pola statusu i wyzwania po usunięciu tajnych wartości. Pośrednik mógł przekształcić odpowiedź albo własne proxy mogło zbudować nieprawidłowe wyzwanie. Porównaj te dowody z własnym dziennikiem transakcji proxy.

Jeśli usługa wysyła zamiast tego 405 lub inny błąd, nie oznaczaj każdej takiej odpowiedzi jako 407 we własnym kliencie. Ukryłbyś rzeczywiste błędy polityki metod, a nadal nie miałbyś niezawodnego uzgadniania schematu. Napraw zachowanie usługi albo użyj jej udokumentowanej i obsługiwanej ścieżki uwierzytelniania.

Wiele wyzwań wymaga też prawdziwego parsera HTTP. Przecinek może rozdzielać parametry lub wyzwania; ślepe dzielenie całego nagłówka na przecinkach może uszkodzić realm w cudzysłowach. Użyj obsługiwanej implementacji uwierzytelniania klienta zamiast serii podmian ciągów.

Dopiero gdy wyzwanie jest użyteczne, ma sens badanie, dlaczego dostawca poświadczeń nie zwrócił konta.

Powiązane artykuły