Piszę małą aplikację, która udostępnia prosty REST-ish HTTP API. Utknąłem, próbując zdecydować, jak zasygnalizować awarię z powodu braku autoryzacji.Błąd uwierzytelniania sygnalizacji w RESTful API
Aplikacja nie ma interfejsu API do uwierzytelniania, ale zależy od obecności pliku cookie zawierającego token sesji uzyskany przez klienta za pośrednictwem innej usługi. Aplikacja weryfikuje sesję i wykorzystuje tożsamość uzyskaną w procesie weryfikacji do autoryzacji aplikacji. Klient nie może uwierzytelnić się bezpośrednio w tej aplikacji.
Mój problem polega na tym, że oczywisty kod statusu HTTP do odrzucania nieautoryzowanych żądań, "401 Unauthorized", jest określony w nagłówku "WWW-Authenticate". Zobacz rfc2616 sec 10.4.2.
Odpowiedź MUSI zawierać WWW-Authenticate pole nagłówka (sekcja 14,47) zawierające wyzwanie zastosowanie do żądanego zasobu.
Nie mogę uwierzyć, że to nietypowy problem. Czy powszechne jest po prostu przeciążenie 401 w celu uwzględnienia bardziej ogólnych zastosowań? A co z przeglądaniem okien dialogowych auth/e (których przypadkowo nie widziałem w moich testach, więc może nie zdarza się to w przypadku testów POST)?
Podsumowując: czy można używać 401 w tym kontekście, czy jest lepsze rozwiązanie?
To nie jest RESTful API, jeśli używasz pliku cookie. Usługi REST są z definicji bezpaństwowcami. –
Fair point - Zmieniłem opis na REST-owski, zamiast RESTful. Czy sądzisz, że odpowiedź brzmi: czy poprawnie wdrożyć uwierzytelnianie na żądanie, czy zrezygnować z próby resteuracji? – j0ni
Trudno powiedzieć, zależy to od zastosowania. Podejście REST ma pewne zalety. Jeśli chcesz nadal korzystać z sesji po stronie serwera, zwrócę 403, jak powiedział Tvanfosson. –