I secured my Spring Boot application with Keycloak 11.0.2 and Spring Security following this documentation.
I used the basic Keycloak configuration in application.properties
:
keycloak.auth-server-url=http://localhost:8085/auth
keycloak.realm=cirta
keycloak.resource=cirta-api
keycloak.public-client=false
I have a separate frontend Angular app, that is configured as a different client in Keylocak; but in the same realm as the Spring Boot app. From the Angular app I am sending the Keycloak-provided token in the HTTP headers with:
'Authorization' : 'Bearer ' + this.securityService.kc.token
When I access an Angular page that calls a GET
API, I get a blocked by CORS policy
error:
Access to XMLHttpRequest at 'http://localhost:8080/api/modePaiements' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.
So I've tried adding the keycloak.cors=true
property to application.properties
. With that property added, the GET
calls are working. But now when I call a POST/PUT
API I'm getting a Failed to load resource: the server responded with a status of 403 ()
error.
KeycloakWebSecurityConfigurerAdapter:
@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);
http.authorizeRequests().antMatchers("/api/*").hasRole("app-manager").anyRequest().permitAll();
}
from Angular/Spring Boot with Keycloak throws 403
No comments:
Post a Comment