Обновление токенов Quarkus, Keycloak и OID C - PullRequest
1 голос
/ 30 апреля 2020

В настоящее время я работаю над Po C с несколькими сервисами Quarkus и Keycloak RBA C. Работает как шарм, легко набирает bootstrap и начинает реализовывать функции.

Но я столкнулся с проблемой, которую не мог решить в своем уме. Представьте себе:

  1. Пользователь получает доступ к защищенному сервису * Расширение 1006 *
  2. quarkus-oidc делает модный токен с помощью перенаправления HTTP, JWT в Cook ie длится 30 минут
  3. Пользователь аутентифицируется и возвращается в веб-приложение
  4. Пользователь работает в приложении, заполняет формы и данные
  5. Данные сохраняются с помощью JEST-обогащенных вызовов REST (мы выполняем проверку с помощью hibernate-validator)
  6. Пользователь снова работает, дольше 30 минут
  7. Хочет сохранить другую запись, но токен с шага 3 истек, и вызов API завершился неудачно
  8. Пользователь не будет рад, поэтому я ни

Возможные способы решения:

  1. Сделать JWT дольше, чем текущие 30 минут, но это только откладывает проблему и открывает некоторые двери безопасности
  2. Хранение пользовательских данных в локальном хранилище для их последующего восстановления после обновления токена sh (мы также сделаем это, чтобы не потерять работу пользователей)
  3. Refre sh токен „ молча “в JS без пользователя k nowing. Есть ли лучший метод для этого?
  4. Я пропустил что-то важное, и inte rnet теперь подсказывает мне лучшую архитектуру для моего приложения.

Спасибо inte rnet!

Ответы [ 2 ]

2 голосов
/ 30 апреля 2020

Повторите шаг 3. В Quarkus 1.5.0 добавление quarkus.oidc.token.refresh-expired=true приведет к обновлению токена идентификатора и продлению сеанса пользователя, если грант refre sh завершился успешно

0 голосов
/ 30 апреля 2020

Для таких случаев использования я предпочитаю обратную сторону JWT. Я храню пользовательские данные в общей службе данных (сетка данных, такая как Infinispan или Redis). Так что эти данные вводятся пользователем и доступны. Я контролирую TTL этих данных в службе общих данных.

Она может быть либо указана c для приложения, либо распределена между небольшим количеством приложений. Это приносит некоторую связь, но также имеет структуру свойств JWT.

Для Quarkus существует интеграция с клиентом Infinispan, Hazelcast one, mongodb и AWS dynamicoDB. И вы можете принести другие библиотеки.

...