<div dir="ltr"><div><div><div>Hello,<br></div>I have a problem to secure my webservice REST.<br></div>I have a spring boot application who is a Webservice REST and an angular 2 application who call the webservice.<br></div>I&#39;m using the keycloak-spring-security-adapter with this configuration : <br><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:&quot;myriad pro&quot;"><span style="color:rgb(187,181,41)">@Configuration<br></span><span style="color:rgb(187,181,41)">@EnableWebSecurity<br></span><span style="color:rgb(187,181,41)">@ComponentScan</span>(<span style="color:rgb(208,208,255)">basePackageClasses </span>= KeycloakSecurityComponents.<span style="color:rgb(204,120,50)">class</span>)<br><span style="color:rgb(204,120,50)">public class </span>SecurityConfig <span style="color:rgb(204,120,50)">extends </span>KeycloakWebSecurityConfigurerAdapter<br>{<br>    <span style="color:rgb(98,151,85);font-style:italic">/**<br></span><span style="color:rgb(98,151,85);font-style:italic">     * Registers the KeycloakAuthenticationProvider with the authentication manager.<br></span><span style="color:rgb(98,151,85);font-style:italic">     */<br></span><span style="color:rgb(98,151,85);font-style:italic">    </span><span style="color:rgb(187,181,41)">@Autowired<br></span><span style="color:rgb(187,181,41)">    </span><span style="color:rgb(204,120,50)">public void </span><span style="color:rgb(255,198,109)">configureGlobal</span>(AuthenticationManagerBuilder auth) <span style="color:rgb(204,120,50)">throws </span>Exception {<br>        auth.authenticationProvider(keycloakAuthenticationProvider())<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>}<br><br>    <span style="color:rgb(98,151,85);font-style:italic">/**<br></span><span style="color:rgb(98,151,85);font-style:italic">     * Defines the session authentication strategy.<br></span><span style="color:rgb(98,151,85);font-style:italic">     */<br></span><span style="color:rgb(98,151,85);font-style:italic">    </span><span style="color:rgb(187,181,41)">@Bean<br></span><span style="color:rgb(187,181,41)">    @Override<br></span><span style="color:rgb(187,181,41)">    </span><span style="color:rgb(204,120,50)">protected </span>SessionAuthenticationStrategy <span style="color:rgb(255,198,109)">sessionAuthenticationStrategy</span>() {<br>        <span style="color:rgb(204,120,50)">return new </span>NullAuthenticatedSessionStrategy()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>}<br><br>    <span style="color:rgb(187,181,41)">@Override<br></span><span style="color:rgb(187,181,41)">    </span><span style="color:rgb(204,120,50)">protected void </span><span style="color:rgb(255,198,109)">configure</span>(HttpSecurity http) <span style="color:rgb(204,120,50)">throws </span>Exception<br>    {<br>        <span style="color:rgb(204,120,50)">super</span>.configure(http)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>http<br>                .authorizeRequests()<br>                .antMatchers(<span style="color:rgb(106,135,89)">&quot;/userFacade*&quot;</span>).hasRole(<span style="color:rgb(106,135,89)">&quot;user&quot;</span>)<br>                .anyRequest().permitAll()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>}<br>}<br></pre>And i have configured CORS in the spring boot config like this :<br><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:&quot;myriad pro&quot;"><span style="color:rgb(187,181,41)">@Bean<br></span><span style="color:rgb(187,181,41)"> </span><span style="color:rgb(204,120,50)">public </span>WebMvcConfigurer <span style="color:rgb(255,198,109)">corsConfigurer</span>() {<br>     <span style="color:rgb(204,120,50)">return new </span>WebMvcConfigurerAdapter() {<br>         <span style="color:rgb(187,181,41)">@Override<br></span><span style="color:rgb(187,181,41)">         </span><span style="color:rgb(204,120,50)">public void </span><span style="color:rgb(255,198,109)">addCorsMappings</span>(CorsRegistry registry) {<br>             registry.addMapping(<span style="color:rgb(106,135,89)">&quot;/userFacade/**&quot;</span>)<br>                     .allowedMethods(<span style="color:rgb(106,135,89)">&quot;GET&quot;</span><span style="color:rgb(204,120,50)">, </span><span style="color:rgb(106,135,89)">&quot;POST&quot;</span><span style="color:rgb(204,120,50)">, </span><span style="color:rgb(106,135,89)">&quot;PUT&quot;</span><span style="color:rgb(204,120,50)">, </span><span style="color:rgb(106,135,89)">&quot;DELETE&quot;</span><span style="color:rgb(204,120,50)">, </span><span style="color:rgb(106,135,89)">&quot;OPTIONS&quot;</span>)<br>                     .allowedOrigins(<span style="color:rgb(106,135,89)">&quot;*&quot;</span>).allowedHeaders(<span style="color:rgb(106,135,89)">&quot;Authorization&quot;</span><span style="color:rgb(204,120,50)">, </span><span style="color:rgb(106,135,89)">&quot;Content-Type&quot;</span><span style="color:rgb(204,120,50)">, </span><span style="color:rgb(106,135,89)">&quot;X-Requested-With&quot;</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">         </span>}<br>     }<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"> </span>}</pre>The endpoint : <br><div><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:&quot;myriad pro&quot;"><span style="color:rgb(187,181,41)">@RestController<br></span><span style="color:rgb(187,181,41)">@RequestMapping</span>(<span style="color:rgb(106,135,89)">&quot;/userFacade&quot;</span>)<br><span style="color:rgb(204,120,50)">public class </span>UserFacade {<br><br>    <span style="color:rgb(187,181,41)">@Autowired<br></span><span style="color:rgb(187,181,41)">    </span><span style="color:rgb(204,120,50)">private </span>UserService <span style="color:rgb(152,118,170)">userService</span><span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">    </span><span style="color:rgb(187,181,41)">@RequestMapping</span>(<span style="color:rgb(208,208,255)">method </span>= RequestMethod.<span style="color:rgb(152,118,170);font-style:italic">GET</span><span style="color:rgb(204,120,50)">, </span><span style="color:rgb(208,208,255)">value </span>= <span style="color:rgb(106,135,89)">&quot;/getAllUsers&quot;</span>)<br>    <span style="color:rgb(204,120,50)">public </span>List&lt;UserDTO&gt; <span style="color:rgb(255,198,109)">getAllUsers</span>() {<br>        <span style="color:rgb(204,120,50)">return </span><span style="color:rgb(152,118,170)">userService</span>.getAllUsers()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>}<span style="color:rgb(128,128,128)"><br></span>}</pre>When i make the call on the frontend, chrome tell me this : <br><br>XMLHttpRequest cannot load <a href="http://localhost:8080/userFacade/getAllUsers">http://localhost:8080/userFacade/getAllUsers</a>. The request was redirected to &#39;<a href="http://localhost:8080/">http://localhost:8080/</a>&#39;, which is disallowed for cross-origin requests that require preflight.<br><br></div><div>My headers on the frontend side : <br>this.headers.append(&#39;Authorization&#39;, &#39;BEARER &#39; + localStorage.getItem(&#39;token&#39;));<br>    this.headers.append(&#39;Content-Type&#39;, &#39;application/json&#39;);<br>    this.headers.append(&#39;X-Requested-With&#39;, &#39;XMLHttpRequest&#39;);<br><br></div><div>I have tried a lot of things like using the keycloak-spring-boot-adapter but same kind of error.<br><br></div><div>Can you help me ?<br><br></div><div>Thanks, <br><br>Best regards,<br><br><br></div><div><br></div></div>