То, что вы описываете, в основном совпадает с потоком паролей oauth, за исключением отсутствующей клиентуры и секрета. Токен доступа и особенно токен обновления НИКОГДА не следует пересылать фактическому приложению, будь то приложение или веб-приложение.
Всегда думайте в обратном и переднем каналах. Фронтальные каналы - то, где ваше приложение работает. Ненадежные среды, например мобильные телефоны, клиентские приложения и т. Д.
Эти среды могут быть скомпрометированы.
Поэтому ваш токен доступа всегда должен быть сохранен на стороне сервера.
Но: вам не обязательно нуженjwt для описанного варианта использования.
Если вам просто нужно войти, было бы безопаснее просто включить механизм входа в сеанс с включенными проверками валидации csrf.
Однако, если вы хотите перейти сJWT Я бы посоветовал вам воспользоваться потоком кода OAUTH или убедиться, что ваш токен доступа хранится на стороне доверенного сервера.
Например:
- , еслипользователь входит, он получает взамен сессионный cookie.
- После этого он мог также получить такой так называемый authCode для специального клиента (в данном случае, для ваших ресурсных серверов или прокси-сервера zuul) и областей видимости, таких как «read_profile, make_payments».
- этот код authCode теперь отправляется на ваш сервер ресурсов или (прокси-сервер zuul сидит перед вашими конечными точками)
- сам сервер ресурсов имеет свои собственные учетные данные клиента и теперь аутентифицируется на сервере аутентификации и получаетaccesstoken в обмен на код авторизации.
В любом случае ваш пользователь будет проходить аутентификацию на основе сеанса с обеих сторон, а ваш ресурсный сервер будет содержать токен доступа для пользователя.