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