[keycloak-user] Spring checks Bearer token for permitted requests
Hylton Peimer
hylton.peimer at datos-health.com
Fri May 26 02:48:52 EDT 2017
Unfortunately that didn't work.
I've implemented a hack which is something like overriding the
KeycloakAuthenticationProcessingFilter and returning an
AnonymousAuthenticationToken if the particular path is requested.
Maybe there's a more elegant way.
protected KeycloakAuthenticationProcessingFilter
keycloakAuthenticationProcessingFilter() throws Exception {
KeycloakAuthenticationProcessingFilter filter = new
KeycloakAuthenticationProcessingFilter(this.authenticationManagerBean()) {
@Override
public Authentication attemptAuthentication(HttpServletRequest
request, HttpServletResponse response) throws AuthenticationException,
IOException, ServletException {
if (request.getServletPath().equals("/mobile/api/refresh")) {
logger.error("Mobile device sent expired bearer token for
/mobile/api/refresh request");
return new AnonymousAuthenticationToken("blah", "blah",
Collections.singleton(new SimpleGrantedAuthority("blah")));
}
return super.attemptAuthentication(request, response);
}
};
filter.setSessionAuthenticationStrategy(this.sessionAuthenticationStrategy());
return filter;
}
On Fri, May 26, 2017 at 9:15 AM, Sebastien Blanc <sblanc at redhat.com> wrote:
> I haven't tried it but you could try to override the configure(WebSecurity
> web) method as well :
>
> @Override
> public void configure(WebSecurity web) throws Exception {
> web
> .ignoring()
> .antMatchers("/mobile/api/login",
>
> "/mobile/api/refresh");
> }
>
>
> On Thu, May 25, 2017 at 9:50 PM, Hylton Peimer <
> hylton.peimer at datos-health.com> wrote:
>
>> I have an instance of KeycloakWebSecurityConfigurerAdapter that contains
>> the following configuration:
>>
>> protected void configure(HttpSecurity httpSecurity) throws Exception {
>> super.configure(httpSecurity);
>>
>> httpSecurity
>> .antMatcher("/mobile/**")
>> .authorizeRequests()
>> .antMatchers("/mobile/api/login",
>> "/mobile/api/refresh").permitAll()
>> .antMatchers("/mobile/api/**").authenticated()
>>
>> ..........
>>
>> The Client is setup for bearer-only.
>>
>> It works fine, except when the access token expires.
>>
>> Some mobile clients send the expired token as a header in the call to
>> "/mobile/api/refresh".
>>
>> The problem is that even though "/mobile/api/refresh" is marked as
>> permitAll, the request is blocked.
>>
>> Its not possible to fix all the mobile clients. How could I configure
>> Spring to ignore the bearer token for the "permitAll" calls, or remove the
>> header?
>> _______________________________________________
>> keycloak-user mailing list
>> keycloak-user at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/keycloak-user
>>
>
>
More information about the keycloak-user
mailing list