Allow access to REST API only for mobile devices

554 Views Asked by At

It is possible to allow only mobile devices to access REST API on my server side (Based on spring framework) ?

1

There are 1 best solutions below

0
Vladlen Gladis On

I just found a solution, don't say that is the best way but anyway it works. For that I'm using spring-mobile library

Create a new Interceptor, to check device type and know to allow him to access API or not, code:

public class MobileDeviceInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Device d = new LiteDeviceResolver().resolveDevice(request);
        if(!d.isNormal()) {
            return true;
        }
        response.sendError(HttpServletResponse.SC_FORBIDDEN);
        return false;
    }
}

In configuration class add it:

public class AppConfig extends WebMvcConfigurerAdapter {
    ...

    @Bean
    public MobileDeviceInterceptor deviceTypeInterceptor(){
        return new MobileDeviceInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(deviceTypeInterceptor());
    }
}

Test it right now and it works.

Note You have to know if User-Agent headers was changed on non mobile platform into mobile values for example:

  • android
  • ipad
  • silk
  • ...

This interceptor will allow access.