2016-05-27 2 views
2

Если кто-то пытается посетить внутреннюю страницу, доступную только после того, как они вошли в систему, какой код ошибки должен быть возвращен? 403 не кажется правильным, потому что они не аутентифицированы. Однако 401 тоже не работает, потому что это означает, что они могут входить в систему, используя базовый auth, который мы не используем.Каков правильный HTTP-код для обозначения «не вошел в систему»?

Правильно ли, когда аутентификация выполняется с помощью метода, отличного от заголовков WWW-Authenticate, для использования 403 вместо 401? Если нет, то какой код следует использовать?

Примечание: Я нашел несколько подобных вопросов, но все они, похоже, спрашивают о сайтах, использующих http basic auth, а не любой другой метод аутентификации.

ответ

0

Код состояния 401 не означает, что вы поддерживаете базовую аутентификацию. Это означает, что сервер не будет обслуживать запрос, потому что отсутствовали соответствующие учетные данные.

Сервер может отправить обратно заголовок WWW-Authenticate, чтобы указать, какие типы учетных данных он поддерживает. Например, если вы только поддерживаете токены JWT, вы отправите обратно «носитель».

+0

Насколько я понимаю, заголовок WWW-Authenticate может указывать ограниченный диапазон значений, вы говорите, что есть что-то, что я могу установить в WWW-Authenticate, чтобы я мог использовать 401, но он не будет спрашивать пользователю сделать основной логин? – Benubird

+0

Да, если вы не поддерживаете базовый authN, не отправляйте его в качестве принятой схемы. См. Также https://tools.ietf.org/html/rfc6750#section-3 – MvdD

+0

Спасибо, я пробовал читать rfc, но у меня все еще создается впечатление, что он не предназначен для разрешения ответа 401 с сервера, который не поддержка базового auth. Можете ли вы направить меня куда-нибудь, что более четко объясняет, как его использовать? – Benubird

Смежные вопросы