Advertisement
Guest User

Untitled

a guest
Dec 19th, 2016
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.68 KB | None | 0 0
  1. A MultiException has 3 exceptions. They are:
  2. 1. java.lang.IllegalStateException: Not inside a request scope.
  3. 2. java.lang.IllegalArgumentException: While attempting to resolve the dependencies of services.AuthentificationFilter errors were found
  4. 3. java.lang.IllegalStateException: Unable to perform operation: resolve on services.AuthentificationFilter
  5.  
  6. org.jvnet.hk2.internal.Collector.throwIfErrors(Collector.java:88)
  7. org.jvnet.hk2.internal.ClazzCreator.resolveAllDependencies(ClazzCreator.java:270)
  8. org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:414)
  9. org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:456)
  10. org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:114)
  11. org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:102)
  12. org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture$1.call(Cache.java:97)
  13. java.util.concurrent.FutureTask.run(FutureTask.java:266)
  14. org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture.run(Cache.java:154)
  15. org.glassfish.hk2.utilities.cache.Cache.compute(Cache.java:199)
  16. org.jvnet.hk2.internal.SingletonContext.findOrCreate(SingletonContext.java:153)
  17. org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2445)
  18. org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:98)
  19. org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:87)
  20. org.glassfish.jersey.internal.inject.Providers.getAllRankedProviders(Providers.java:234)
  21. org.glassfish.jersey.server.ApplicationHandler.getProcessingProviders(ApplicationHandler.java:616)
  22. org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:409)
  23. org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:161)
  24. org.glassfish.jersey.server.ApplicationHandler$3.run(ApplicationHandler.java:286)
  25. org.glassfish.jersey.internal.Errors$2.call(Errors.java:289)
  26. org.glassfish.jersey.internal.Errors$2.call(Errors.java:286)
  27. org.glassfish.jersey.internal.Errors.process(Errors.java:315)
  28. org.glassfish.jersey.internal.Errors.process(Errors.java:297)
  29. org.glassfish.jersey.internal.Errors.processWithException(Errors.java:286)
  30. org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:283)
  31. org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:298)
  32. org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:167)
  33. org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:349)
  34. javax.servlet.GenericServlet.init(GenericServlet.java:158)
  35. org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
  36. org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
  37. org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
  38. org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
  39. org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:784)
  40. org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
  41. org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:802)
  42. org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1410)
  43. org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
  44. java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  45. java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  46. org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
  47. java.lang.Thread.run(Thread.java:745)
  48.  
  49. @Provider
  50. public class AuthentificationFilter implements javax.ws.rs.container.ContainerRequestFilter {
  51.  
  52. @Context
  53. private ResourceInfo resourceInfo;
  54.  
  55. private static final String AUTHORIZATION = "Authorization";
  56. private static final String BASIC = "Basic";
  57. private static final Response ACCESS_DENIED = Response.status(Response.Status.UNAUTHORIZED).entity("Essayez de mettre sudo devant votre requete").build();
  58. private static final Response ACCESS_FORBIDDEN = Response.status(Response.Status.FORBIDDEN).entity("You shall not pass !").build();
  59.  
  60. @Override
  61. public void filter(final ContainerRequestContext context) throws IOException {
  62. Method method = resourceInfo.getResourceMethod();
  63. if(!method.isAnnotationPresent(PermitAll.class)) {
  64. MultivaluedMap<String, String> headers = context.getHeaders();
  65. List<String> authorization = headers.get(AUTHORIZATION);
  66.  
  67. if(method.isAnnotationPresent(DenyAll.class)) {
  68. context.abortWith(ACCESS_FORBIDDEN);
  69. return;
  70. }else if(authorization == null || authorization.isEmpty()) {
  71. context.abortWith(ACCESS_DENIED);
  72. return;
  73. }
  74.  
  75. String encodedUserPassword = authorization.get(0).replaceFirst(BASIC + " ", "");
  76. String auth = new String(Base64.getDecoder().decode(encodedUserPassword.getBytes()));;
  77.  
  78. String[] authTab = auth.split(":");
  79. String username = authTab[0];
  80. String password = authTab[1];
  81.  
  82. if(method.isAnnotationPresent(RolesAllowed.class)) {
  83. RolesAllowed rolesAnnotation = method.getAnnotation(RolesAllowed.class);
  84. Set<String> rolesSet = new HashSet<String>(Arrays.asList(rolesAnnotation.value()));
  85. if(!isAllowed(username, password, rolesSet)) {
  86. context.abortWith(ACCESS_DENIED);
  87. return;
  88. }
  89. }
  90. }
  91. }
  92.  
  93. private boolean isAllowed(final String username, final String password, final Set<String> rolesSet)
  94. {
  95. boolean isAllowed = false;
  96. User user;
  97. if((user = new UserMapper().get(username, password)) != null) {
  98. String role = user.getStatus().toString();
  99. if(rolesSet.contains(role))
  100. isAllowed = true;
  101. }
  102. return isAllowed;
  103. }
  104.  
  105. public class MyApplication extends ResourceConfig {
  106.  
  107. public MyApplication() {
  108. packages("services");
  109. register(AuthentificationFilter.class);
  110. }
  111. }
  112.  
  113. <?xml version="1.0" encoding="UTF-8"?>
  114. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  115. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  116. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  117. version="3.1">
  118.  
  119. <servlet>
  120. <servlet-name>Example API</servlet-name>
  121. <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
  122. <init-param>
  123. <param-name>javax.ws.rs.Application</param-name>
  124. <param-value>services.MyApplication</param-value>
  125. </init-param>
  126. <init-param>
  127. <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
  128. <param-value>true</param-value>
  129. </init-param>
  130. <load-on-startup>1</load-on-startup>
  131. </servlet>
  132.  
  133. <servlet-mapping>
  134. <servlet-name>Example API</servlet-name>
  135. <url-pattern>/*</url-pattern>
  136. </servlet-mapping>
  137. </web-app>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement