Guest User

Untitled

a guest
Nov 21st, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. import org.apache.commons.lang3.StringUtils;
  2.  
  3. import com.google.inject.Singleton;
  4.  
  5. import java.io.IOException;
  6. import java.util.List;
  7. import java.util.Random;
  8.  
  9. import javax.ws.rs.container.ContainerRequestContext;
  10. import javax.ws.rs.container.ContainerRequestFilter;
  11. import javax.ws.rs.core.MediaType;
  12. import javax.ws.rs.core.Response;
  13. import javax.ws.rs.core.UriInfo;
  14.  
  15. @Authenticator
  16. @Singleton
  17. public class AuthenticateFilter implements ContainerRequestFilter {
  18.  
  19. private static final String PARAM_API_KEY = "apiKey";
  20. private static final String PARAM_TOKEN = "token";
  21.  
  22. @Override
  23. public void filter(ContainerRequestContext context) throws IOException {
  24. final String apiKey = extractParam(context, PARAM_API_KEY);
  25. if (StringUtils.isEmpty(apiKey)) {
  26. context.abortWith(responseMissingParameter(PARAM_API_KEY));
  27. }
  28.  
  29. final String token = extractParam(context, PARAM_TOKEN);
  30. if (StringUtils.isEmpty(token)) {
  31. context.abortWith(responseMissingParameter(PARAM_TOKEN));
  32. }
  33.  
  34. if (!authenticate(apiKey, token)) {
  35. context.abortWith(responseUnauthorized());
  36. }
  37. }
  38.  
  39. private String extractParam(ContainerRequestContext context, String param) {
  40. final UriInfo uriInfo = context.getUriInfo();
  41. final List<String> paramValues = uriInfo.getQueryParameters().get(param);
  42. return paramValues != null && !paramValues.isEmpty() ? String.valueOf(paramValues.get(0)) : null;
  43. }
  44.  
  45. private Response responseMissingParameter(String name) {
  46. return Response.status(Response.Status.BAD_REQUEST)
  47. .type(MediaType.TEXT_PLAIN_TYPE)
  48. .entity("Parameter '" + name + "' is required.")
  49. .build();
  50. }
  51.  
  52. private boolean authenticate(String apiKey, String token) {
  53. return new Random().nextBoolean();
  54. }
  55.  
  56. private Response responseUnauthorized() {
  57. return Response.status(Response.Status.UNAUTHORIZED)
  58. .type(MediaType.TEXT_PLAIN_TYPE)
  59. .entity("Unauthorized")
  60. .build();
  61. }
  62. }
Add Comment
Please, Sign In to add comment