интеграция jhipster / spring keycloak - настройка пользовательского redirect_uri - PullRequest
0 голосов
/ 20 июня 2020

У меня есть приложение spring / jhipster с кнопкой для входа в keycloak. Когда я нажимаю кнопку входа в систему, я попадаю в keycloak, и URL-адрес будет выглядеть примерно так:

https://keycloak.mydomain.com/auth/realms/my-realm/protocol/openid-connect/auth?response_type=code&client_id=myclient&redirect_uri=http://localhost:8080/login/oauth2/code/oidc

Итак, в приведенном выше примере я хочу изменить redirect_uri=http://localhost:8080/login/oauth2/code/oidc на что-то другое.

Итак, я добавил приведенный ниже код в src / main / java /../ config / AuthorizationServerConfig. java:

@Configuration
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {

    @Bean
    PasswordEncoder passwordEncoder() {
        return PasswordEncoderFactories.createDelegatingPasswordEncoder();
    }

    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients
                .inMemory()
                .withClient("myclient")
                .secret(passwordEncoder().encode("mysecret"))
                .scopes("resource:read")
                .authorizedGrantTypes("authorization_code")
                .redirectUris("https://new-url-I-want.com");
    }

}

Но даже с указанным выше изменением redirect_uri не т вообще не изменится. Кто-нибудь знает, почему это так?


И дополнительная информация о том, почему я внес эти изменения:

С потоком кода авторизации OID C поставщик услуг (в данном случае мой веб-сайт) предоставляет поставщику удостоверений (Keycloak) URI для перенаправления пользователя обратно после успешной аутентификации. Однако, согласно документам Spring, «с конфигурацией по умолчанию, хотя поток кода авторизации технически разрешен, он не полностью настроен»: https://docs.spring.io/spring-security-oauth2-boot/docs/current/reference/html5/#oauth2 -boot-authorization-server-authorization-code-grant

В документах go говорится, что «OAuth2 Boot не поддерживает настройку URI перенаправления в качестве свойства - скажем, вместе с идентификатором клиента и секретом клиента». Итак,

"Чтобы добавить URI перенаправления, вам необходимо указать клиента, используя InMemoryClientDetailsService или JdbcClientDetailsService": https://docs.spring.io/spring-security-oauth2-boot/docs/current/reference/html5/#registering -a-redirect-uri-with-the- клиент

1 Ответ

0 голосов
/ 11 июля 2020

Вы можете добавить еще один URI перенаправления, добавив следующее свойство и src / main / resources / config / application.yml

  security:
    oauth2:
      client:
        provider:
          oidc:
            issuer-uri: http://localhost:9080/auth/realms/jhipster
        registration:
          oidc:
            client-id: web_app
            client-secret: web_app
            redirect-uri: http://localhost:8080/my-custom-redirect

Кроме того, вам необходимо настроить пользовательский URI перенаправления для входа в систему oauth2 в SecurityConfiguration следующим образом

...
.and()
   .oauth2Login()
       .redirectionEndpoint()
        .baseUri("/my-custom-redirect")
    .and()
.and()
    .oauth2ResourceServer()
...
...