Я настроил параметры keycloak в application.properties (чтобы использовать OpenID connect для защиты конечных точек REST). Это включает в себя указанные защищенные конечные точки ...
keycloak.security-constraints[0].securityCollections[0].patterns[0]=/getRecord
keycloak.security-constraints[0].securityCollections[0].patterns[1]=/getUsers
Это работает, когда я запускаю 'Spring Boot App' в Eclipse (используя встроенный сервер Tomcat), но когда я упаковываю войну и развертываю ее в Tomcat, эти конечные точки не защищены.
Чтобы защитить конечные точки в развернутом приложении, я должен определить их непосредственно в своем коде (класс SecurityConfig расширяет KeycloakWebSecurityConfigurerAdapter)
@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);
http.authorizeRequests()
.antMatchers("/getRecord").hasRole("user")
.antMatchers("/getUsers").hasRole("user")
.anyRequest().permitAll();
}
Это не так гибко, как конфигурация в application.properties.
Он выбирает другие параметры конфигурации, такие как keycloak.auth-server-url, keycloak.realm и т. Д. Из файла свойств, но не конечные точки.
Как указать конечные точки, чтобы они работали как в Eclipse (встроенный Tomcat), так и при развертывании в Tomcat (9.0.13)?