Какой правильный HTTP-код указывает на "не авторизован"?
Если кто-то пытается посетить внутреннюю страницу, которая доступна только после входа в систему, какой код ошибки должен быть возвращен? 403 не кажется правильным, потому что они не прошли проверку подлинности. Однако 401 также не работает, потому что это означает, что они могут войти в систему, используя базовую аутентификацию, которую мы не используем.
Правильно ли, когда аутентификация выполняется с помощью метода, отличного от заголовков WWW-Authenticate, использовать 403 вместо 401? Если нет, какой код следует использовать?
Примечание: я нашел несколько подобных вопросов, но все они, похоже, задают вопросы о сайтах, использующих базовую аутентификацию http, а не какой-либо другой метод аутентификации.
1 ответ
Код состояния 401 не означает, что вы поддерживаете базовую аутентификацию. Это означает, что сервер не будет обслуживать запрос, поскольку отсутствуют соответствующие учетные данные.
Сервер может отправить обратно заголовок WWW-Authenticate, чтобы указать, какие типы учетных данных он поддерживает. Например, если вы поддерживаете только токены JWT, вы отправите обратно "носитель".