Какой правильный HTTP-код указывает на "не авторизован"?

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

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

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

1 ответ

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

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

Другие вопросы по тегам