NestJs / Angular / Cognito flow - PullRequest
       136

NestJs / Angular / Cognito flow

1 голос
/ 29 апреля 2020

Потоки аутентификации и авторизации трудно понять без конкретных примеров. Nest Js do c имеет хороший пример для токенов JWT, однако мне трудно установить sh правильный поток.

Вот самое близкое, что мне удалось получить для решения авторизации поток:

  1. после аутентификации сохраните токен refre sh в БД (который мне не очень нравится, но не смог найти более простой способ его обработки), отправьте токен доступа на Angular и хранить его в локальном хранилище или у повара ie
  2. При каждом запросе отправлять токен доступа и проверять, все еще ли он действителен и не близок к истечению срока действия; если срок его действия истекает или вот-вот истечет, то go в БД, получите токен refre sh и используйте его для получения нового токена доступа. Мне бы очень хотелось, чтобы токен refre sh также хранился в cook ie, но проблема в том, что я не знаю, как получить больше, чем заголовок Authorization при реализации JwtStrategy, и что лучше ( если есть) способ прикрепить refre sh token
  3. Если токен доступа обновлен, каким-то образом отправить его обратно на сторону Angular для замены. отправьте также истекшее время, чтобы сторона Angular не заменяла более новый токен доступа более старым при наличии одновременных запросов. Но у одновременных запросов все еще есть шанс столкнуться с условием состязания, и каждый, отдельно, запрашивает токен доступа.

Есть несколько деталей, которые отсутствуют в сводке выше, но это должно дать общий поток, который я пытаюсь реализовать. Сейчас у меня есть две проблемы:

  1. Возможность множественных одновременных запросов, все обнаружив, что токен доступа скоро истечет, и попытаясь обновить sh его сразу.
  2. Как добавить новый токен доступа и отметку времени истечения в заголовок ответа (или тело, если оно должно быть там), в самом JwtStrategy, чтобы весь цикл аутентификации мог обрабатываться с помощью одной аннотации / защиты.

Я ценю, если кто-то может помочь с этими двумя вопросами.

Кроме того, я не уверен, соответствует ли он политикам SO, но поскольку для комбинации NestJs / Angular / Cognito нет материала solid, и поскольку auth является наиболее важной частью защищенной веб-страницы. Я буду рад предоставить некоторые вознаграждения тем, кто может поместить полный рабочий пример в github, который полностью демонстрирует, как потоки аутентификации и авторизации (как access, так и refre sh tokens) реализованы с использованием передового опыта.

Наконец, вот лучшие (только?) Ресурсы, которые я нашел и использовал до сих пор для комбо NestJs / Cognito; никто не может ответить на поставленные выше вопросы.

...