Проблема перенаправления при отправке запроса аутентификации в keycloak - PullRequest
1 голос
/ 20 июня 2020

У меня есть приложение 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

Любая помощь в решении этой проблемы будет принята

...