У меня есть приложение Spring Boot + Angular, которое я развертываю с помощью JHipster и Keycloak, и у меня возникла проблема с аутентификацией пользователя с помощью Keycloak. В веб-службе у меня есть служба входа в систему, которая предназначена для приема запроса и перенаправления его на аутентификацию OID C, но кажется, что когда запрос отправляется через keycloak, URL-адрес перезаписывается. Это вызывает неправильный вызов URL, который приводит к ответу с ошибкой 404. Кто-нибудь знает, что может быть решением этой проблемы?
Вот пример службы входа в систему, которая формирует URI перенаправления:
// if on platform1
if( location.hostname !== "localhost"){
location.href = '//' + location.hostname + port + '/portal/oauth2/authorization/oidc';
}else{
location.href = '//' + location.hostname + port + '/oauth2/authorization/oidc';
}
Работающий экземпляр должен отправить URL-перенаправление на /portal/oauth2/authorization/oidc
, но это не так и вместо этого отправляется на /oauth2/authorization/oidc
. После запроса / ответа в реальном времени видно, что приложение отправляет правильный URL-адрес для перенаправления, но соединение keycloak возвращает неверный URL-адрес клиенту
Я добавил / portal /, / portal / login и / portal / oauth2 в качестве действительных URI перенаправления в областях keycloak> конфигурация клиентов
Мы добавили класс SecurityConfiguration
в Spring Boot, чтобы добавить URI перенаправления
@Bean
PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
protected void configure(ClientDetailsServiceConfigurer clients) {
clients
.inMemory()
.withClient("portal-view")
.secret(passwordEncoder().encode("portal-view"))
.scopes("resource:read")
.authorizedGrantTypes("authorization_code")
.redirectUris("https://testproxy.spacecamp.ninja/portal/");
Даже когда мы вручную введите правильный URL-адрес, так как в redirect_uri есть /portal
, следующая страница, к которой он приведет вас, - это ошибка 404
Любая помощь в решении этой проблемы будет принята