Как заставить AWS вернуть код состояния, показывающий, что срок действия JWT, использованного для авторизации, истек? - PullRequest
0 голосов
/ 16 апреля 2019

Я использую серверную среду с AWS для разработки веб-приложения на основе API Gateway / Lambda.Я использую JWT для аутентификации и авторизации, пишу собственный авторизатор, который подключается к конфигурации шлюза API без сервера.

Моя стратегия при входе в систему состоит в том, чтобы выдать токен «access» со сроком действия 60 минут, а также токен «refresh» со сроком действия 8 дней.Если пользователь пытается получить доступ к системе более чем через 60 минут после выдачи токена доступа, клиентское приложение будет вызывать API-интерфейс refresh_token, аутентифицируемый токеном обновления (и это единственный API, который будет позволять этот токен обновления), чтобы получить новыйпара жетонов.Таким образом, пользователю нужно будет повторно вводить имя пользователя / пароль только в том случае, если они неактивны в течение более 8 дней, в противном случае они продолжают обновлять токены, давая системе возможность каждые 60 минут загружать их, если они были в черном списке..

Эта стратегия работает нормально, за исключением того, что я могу только найти, как принять или запретить доступ к API на основе анализа JWT - не передавать обратно определенный код состояния клиенту («Токен истек - вынужно обновить "что-то вроде).

Так что в моей module.exports.user = (event, context, callback) => {} функции я callback('user','Deny',methodArn), но это не дает клиенту никаких подсказок о том, почему запрос пользователя был отклонен.

Однако примечательно, что в этой ситуации нет стандартного кода состояния HTTP - только общий 401. Так есть ли лучший способ решить эту проблему, и я поступаю неправильно?

1 Ответ

0 голосов
/ 16 апреля 2019

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

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