Идеальный способ сделать это для меня - использовать службу единого входа, такую как keycloak , в качестве поставщика удостоверений.Это включает портирование вашей логики аутентификации на нее и отделение ее от вашего монолита.Но если вы полагаетесь на него как на свой IdP, вы делите токены только между своими приложениями и IdP.Keycloak имеет много адаптеров, для клиентов Java, Javascript, NodeJs и т. Д.Это имеет огромное преимущество, заключающееся в том, что вы можете продолжать отделять логику от своего монолита, и вам даже не нужны новые модули для написания на Java.Вы даже можете интегрировать его со службами, не написанными вами, для них достаточно интеграции Open Id Connect или SAML.
KC поддерживает протоколы SAML и OIDC Auth.С OIDC (способ работы с совершенно новыми приложениями) адаптер, расположенный в каждом из приложений, проверяет, имеет ли пользователь действующий веб-сеанс или нет.Если нет, он будет перенаправлен на страницу входа в KC.Результатом действительного входа в систему является код, который вы можете использовать для получения токена доступа (действительного токена для получения ресурсов из вашего приложения).Кроме того, адаптер связывает этот токен доступа с веб-сеансом браузера, который также хранится в KC.Поэтому, если вы пытаетесь получить доступ к другой веб-странице, адаптер проверяет ваш веб-сеанс, который считается действительным.
Вы также можете использовать его для доступа к своим приложениям с мобильного устройства, заботясь о доступеУправление токенами / обновление в мобильном приложении самостоятельно.
См. также: