Соответствующий статус HTTP для перенаправления на аутентификацию в REST api - PullRequest
0 голосов
/ 10 июля 2020

Я немного удивлен, что после того, как я искал это некоторое время, я не нашел столько ответов, сколько я ожидал (ну, я не нашел ни одного), так что, возможно, задав вопрос здесь, мы сможем помочь улучшить результаты поиска.

Я создаю REST api с аутентификацией на основе JWT. Существует маршрут / auth / login, который возвращает токен после проверки логина / пароля, и впоследствии токен отправляется на каждом маршруте в HTTP-заголовке авторизации.

Нет, предположим, что кто-то запрашивает другой маршрут (скажем, / cars) без отправки токена (то есть до входа в систему). Если я верну 401 unauthorized, я могу сделать внешний запрос / auth / login, чтобы получить токен.

Но, строго говоря, это не соответствует спецификации REST, потому что каждый ресурс должен быть обнаружен из начальный, и клиент, обращающийся к / cars и получивший 401, не будет знать о /auth/login.

Таким образом, другим вариантом будет перенаправление, подобное 302. Но эта семантика означает, что ресурс был временно перемещен, и это не так (ресурс по-прежнему / cars, вам просто нужно сначала пройти аутентификацию).

Итак, как правильно выполнить эту процедуру в "истинном" rest api?

1 Ответ

3 голосов
/ 10 июля 2020

Я на 100% согласен, поэтому я предложил этот стандарт:

https://tools.ietf.org/html/draft-pot-authentication-link-01

Идея состоит в том, что для подобных случаев вы должны иметь возможность чтобы вернуть заголовок Link с authentication rel, чтобы клиент мог узнать, что делать дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...