Что-то, чего нет в других ответах, так это то, что следует понимать, что Аутентификация и Авторизация в контексте RFC 2616 относятся ТОЛЬКО к протоколу HTTP-аутентификации RFC 2617. Аутентификация по схемам вне RFC2617 не поддерживается в кодах состояния HTTP ине учитываются при принятии решения об использовании 401 или 403.
Кратко и кратко
Неавторизовано означает, что клиент не аутентифицирован RFC2617, и сервер инициирует процесс аутентификации.Запрещено означает, что клиент прошел проверку подлинности RFC2617 и не имеет авторизации или что сервер не поддерживает RFC2617 для запрошенного ресурса.
Это означает, что у вас есть свой собственный процесс входа в систему по принципу «сворачивание» и вы никогда не используете HTTPАутентификация, 403 - это всегда правильный ответ, и никогда не следует использовать 401.
Подробно и подробно
Из RFC2616
10.4.2 401 Несанкционированный
Запрос требует аутентификации пользователя.Ответ ДОЛЖЕН включать поле заголовка WWW-Authenticate (раздел 14.47), содержащее запрос, применимый к запрашиваемому ресурсу.Клиент МОЖЕТ повторить запрос с подходящим полем заголовка Авторизация (раздел 14.8).
и
10.4.4 403 Запрещено Сервер понял запрос, но отказывается его выполнить.Авторизация не поможет, и запрос НЕ СЛЕДУЕТ повторять.
Первое, что следует иметь в виду, это то, что «Аутентификация» и «Авторизация» в контексте этого документа относятся именно к протоколам HTTP-аутентификации.из RFC 2617. Они не относятся к каким-либо протоколам проверки подлинности, созданным вами самими, которые вы могли создать, используя страницы входа и т. д. Я буду использовать «вход в систему» для ссылки на проверку подлинности и авторизацию другими способами, кроме RFC2617
Таким образом, реальная разница не в том, в чем проблема, или даже в том, если есть решение.Разница в том, что сервер ожидает, что клиент будет делать дальше.
401 означает, что ресурс не может быть предоставлен, но сервер ЗАПРОСИЛ, чтобы клиент вошел через HTTP-аутентификацию, и отправил заголовки ответа, чтобы инициироватьпроцесс.Возможно, есть авторизации, которые разрешат доступ к ресурсу, возможно, нет, но давайте попробуем и посмотрим, что произойдет.
403 указывает, что ресурс не может быть предоставлен и существует для текущегоПользователь, нет способа решить это через RFC2617 и нет смысла пытаться.Это может быть связано с тем, что известно, что уровень аутентификации недостаточен (например, из-за черного списка IP-адресов), но это может быть связано с тем, что пользователь уже аутентифицирован и не имеет полномочий.Модель RFC2617 является однопользовательской, однопользовательской, поэтому случай, когда у пользователя может быть второй набор учетных данных, которые можно авторизовать, может быть проигнорирован.Это не предполагает и не подразумевает, что какая-либо страница входа в систему или другой протокол аутентификации, отличный от RFC2617, может или не может помочь - это выходит за рамки стандартов и определений RFC2616.
Редактировать: RFC2616 устарел, см. RFC7231 и RFC7235 .