У меня есть два приложения Spring Boot, давайте назовем их APP1 и APP2.
У меня есть один экземпляр Keycloak с одной областью под названием MyRealm.
В MyRealm я создал два клиента, APP1 -Client и APP2-Client, оба из Access Type publi c.
Я создал соответствующие роли.
Оба моих приложения Spring Boot были настроены для использования Keycloak и Spring Security.
В каждом из моих файлов application.properties для каждого приложения Spring Boot у меня есть:
keycloak.auth-server-url=http://localhost:8080/auth
keycloak.realm=MyRealm
keycloak.resource=APP[1/2]-Client
keycloak.public-client=true
keycloak.enabled=true
keycloak.principal-attribute=preferred_username
Я настроил класс WebSecurityConfig для расширения KeycloakWebSecurityConfigurerAdapter.
Все работает, и когда я открываю любое из моих приложений через браузер и пытаюсь получить доступ к защищенному URL-адресу, он перенаправляет меня на страницу аутентификации Keycloak, я могу войти в систему, а затем перенаправить на свои защищенные URL-адреса в любом приложении.
Но Теперь мой вопрос: что если я хочу, чтобы я как пользователь имел доступ к обоим приложениям, как я сейчас делаю через браузер, но я также хочу, чтобы мои два приложения (APP1 и APP2), чтобы общаться друг с другом в фоновом режиме, возможно, передавая данные по запланированному маршруту, без участия какого-либо пользователя. Как теперь я могу заставить их общаться друг с другом, используя конечные точки REST, защищенные Keycloak, но также заставлять пользователей проходить аутентификацию, используя свое имя пользователя и пароль при входе через браузер?