使用Jmix(1.6版本) 结合keycloak实现单点登录,登录之后跳转jmix服务403错误

hi all
背景: 我们的项目正在使用jmix,同时使用在jmix的多模块中和keycloak 结合使用实现单点登录的功能。 但是,我们使用AWS实现HTTPS的功能, 内部服务还是使用HTTP.

问题: 因为内部服务是HTTP的方式,因此返回两个重定向地址login endpoint 和 redirection endpoint都是http, 这样就会导致浏览器拿到的重定向是HTTP, 在使用重定向的HTTP地址访问的时候会被AWS的HTTPS拦截无法访问。

目前的解决方式和遇到的问题:redirection endpoint可以在yml 中配置https://192.168.120.1:8081/login/oauth2/code/keycloak, login endpoint使用spring security 进行配置, 但是这样配置后可以正常跳转到keycloak的登录页了,但是输入用户名和密码登录之后出现403错误

@Configuration
@NoArgsConstructor
public class ActuatorConfig {

    /**
     * The oauth2LoginPageUrl.
     */
    @Value("${custom.security.oauth2.login-page}")
    private String oauth2LoginPageUrl;

    /**
     * securityFilterChain.
     *
     * @param http
     *            http
     * @return ret
     * @throws Exception
     *             Exception
     */
    @Bean
    @Order(JmixOrder.HIGHEST_PRECEDENCE)
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http.authorizeHttpRequests(
                authorize -> authorize.antMatchers("/actuator/health").permitAll().anyRequest().authenticated())
                .oauth2Login(oauth2LoginCustomizer -> oauth2LoginCustomizer.loginPage(oauth2LoginPageUrl));
        return http.build();
    }

}
spring.security.oauth2.client.registration.keycloak.redirect-uri=https://192.168.120.1:8081/login/oauth2/code/keycloak

image

这个问题看上去是跟 keykloak 的配置有关。找到两个帖子,你看看有没有帮助:

HTTP Error 403 after login on new install - Configuring the server - Keycloak

StackOverflow keycloak 403 using HTTPS

感谢您的回复, 目前在考虑这个需求的时候, 我有一个其他的解决方式是通过过滤器拦截指定的url 进行处理, 但是有一个新的问题是: 添加我们jmix security 过滤器链的那个顺序上比较合适

image
补充信息: @Order(JmixOrder.HIGHEST_PRECEDENCE) 过滤器设置这个顺序之后就会出现403