Правильное поведение общедоступного ресурса api, запрошенного с использованием просроченного токена авторизации

Я знаю, что уже есть много вопросов 401 против 403, но в моем случае это нет.

Я спрашиваю:, что в идеале должен делать сервер, если запрошенный ресурс api общедоступен (без авторизации требовать), но запрос включает заголовок авторизации с токеном, который либо неверен, либо просрочен?

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

Я думаю, что быть "плохо аутентифицированным" и, следовательно, неявно рассматриваться как анонимное, является неопределенным и сбивающим с толку поведением.

Итак, подведем итоги. Оправдано ли использование 400 в данном конкретном случае или существует какая-то другая общепринятая практика?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
21
1

Ответы 1

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

Связанные с этим:

«но это кажется очень плохой идеей. Например, бизнес-логика обработки запроса может отличаться в зависимости от аутентификации или нет».

Я думаю, что в этом случае вам следует изменить сам API, чтобы он требовал аутентификации и не принимал любого неавторизованного пользователя или пользователя с просроченным токеном.

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

Я бы не согласился. Скажем, у меня есть CMS, в которой и интерфейс, и сервер являются SPA. Если у вас нет каких-либо конкретных требований, которых у меня нет, имеет смысл создать один api, обслуживающий оба приложения. Вот и все - для некоторых конечных точек требуется авторизация, для некоторых - нет, а некоторые различаются по поведению в зависимости от авторизации. Например, если вы аутентифицированы как администратор, вы получаете некоторые закрытые данные о сообщениях, пользователях, которых анонимные пользователи никогда не должны видеть.

plunntic iam 24.11.2018 06:46

В любом случае, я хотел сказать, что запрос с недействительной авторизацией действительно плохой / неработающий. Например, клиент предполагает, что он аутентифицирован как администратор, но api не может ответить так, как предполагает клиент, потому что на этом этапе авторизация недействительна. Но ответ только общедоступными данными может быть (и, вероятно, это) чем-то совершенно отличным от того, что ожидает клиент. Вот почему я думаю, что api должен отвечать 400 (или другим плохим типом кода).

plunntic iam 24.11.2018 06:53

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