1 Востаннє редагувалося Q-bart (24.04.2020 19:16:29)

Тема: 401 is responsible for authentication or authorization

При проектуванні системи вивявив трохи неявну специфікацію http (на мій погляд поки).


Authentication vs Authorization:
Authentication - сервер шукає юзера, і підтверджує, що той, хто послав запит, саме той, за кого себе видає;
Authorisation - перевірка чи юзер, який послав запит має права доступу до URI.
-виконується при кожному запиті

В процесі автентифікації, якщо в юзера невірні кредли (username/пароль, apikey, ...) - сервер повертає 401 Unauthorized (https://tools.ietf.org/html/rfc7235#section-3.1)

А якщо в процесі авторизації недостатньо прав - то повертає 403 Forbidden (https://tools.ietf.org/html/rfc7231#section-6.5.3)

Authentication - 401 Unauthorized
Authorization - 403 Forbidden

Чому 401 носить назву Unauthorize, якщо він повертається через помилку в Authentication, до Authorization справа ще не дійшла навіть? Хіба не має бути 401 Unauthenticated?


Прихований текст

В django-tastypie при недостатніх правах повертається 401 Unauthorized, хоча момент перевірки прав, я вже маю повністю юзера. Тому й треба розібратись

Дякую

Подякували: leofun011

2

Re: 401 is responsible for authentication or authorization

Відповідь приблизно така: 401 - ТИМЧАСОВИЙ код помилки, "я не знаю, хто ви, тому не можу сказати, чи маєте ви авторизацію, спробуйте ще раз". 403 - ПОСТІЙНИЙ код: "я знаю, хто ви і що ви не маєте авторизації, вам заборонено". Так, назви дещо заплутують.

https://stackoverflow.com/questions/329 … -responses

Подякували: leofun01, P.Y., plusxx, ostap34PHP, Q-bart5