From 17cef53178b60c80b6fb47987bb75076cb1b5232 Mon Sep 17 00:00:00 2001
From: Julian Horner <julianhorner@web.de>
Date: Thu, 2 Jan 2020 14:12:07 +0100
Subject: [PATCH] Remove unnecessary code in SecurityConfiguration and minor
 improvements

---
 .../java/de/rtuni/ms/apig/Application.java    |  6 +-
 .../ms/apig/config/SecurityConfiguration.java | 64 +++++++++----------
 .../ms/apig/controller/LoginController.java   | 11 ++--
 3 files changed, 38 insertions(+), 43 deletions(-)

diff --git a/src/main/java/de/rtuni/ms/apig/Application.java b/src/main/java/de/rtuni/ms/apig/Application.java
index 4a3073e..8f4d7b2 100644
--- a/src/main/java/de/rtuni/ms/apig/Application.java
+++ b/src/main/java/de/rtuni/ms/apig/Application.java
@@ -11,7 +11,7 @@ import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
 import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
 
 /**
- * Starts the api gateway as a zuul server.
+ * Class for starting an api gateway as a zuul server.
  * 
  * @author Julian
  *
@@ -23,11 +23,11 @@ public class Application {
     //---------------------------------------------------------------------------------------------
     
     /**
-     * Starts the application.
+     * Start the application.
      * 
      * @param args The arguments
      */
-    public static void main(final String[] args) { SpringApplication.run(Application.class, args); }
+    public static void main(String[] args) { SpringApplication.run(Application.class, args); }
 
     //---------------------------------------------------------------------------------------------
 }
diff --git a/src/main/java/de/rtuni/ms/apig/config/SecurityConfiguration.java b/src/main/java/de/rtuni/ms/apig/config/SecurityConfiguration.java
index e1b430e..de34e6a 100644
--- a/src/main/java/de/rtuni/ms/apig/config/SecurityConfiguration.java
+++ b/src/main/java/de/rtuni/ms/apig/config/SecurityConfiguration.java
@@ -13,65 +13,59 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur
 import org.springframework.security.config.http.SessionCreationPolicy;
 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
 
-import de.rtuni.ms.apig.filter.JwtTokenAuthenticationFilter;
+import de.rtuni.ms.apig.filter.JWTAuthenticationFilter;
 
 /**
- * Class that enables custom security configuration.
+ * Class that handles several security configurations.
  * 
  * @author Julian
  */
 @EnableWebSecurity
 public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
-    //----------------------------------------------------------------------------------------------
+    //---------------------------------------------------------------------------------------------
 
-    /** The <code>JwtConfig</code> for the json web token. */
+    /** The <code>JwtConfiguration</code>. */
     @Autowired
-    private JwtConfig jwtConfig;
+    private JwtConfiguration jwtConfiguration;
 
-    //----------------------------------------------------------------------------------------------
+    //---------------------------------------------------------------------------------------------
 
     /**
-     * Overrides the default security configuration.
+     * Get a new <code>JwtConfiguration</code>.
+     * 
+     * @return The stated JWT configuration
+     */
+    @Bean
+    public JwtConfiguration jwtConfig() {
+        return new JwtConfiguration();
+    }
+
+    //---------------------------------------------------------------------------------------------
+
+    /**
+     * Configure custom security configurations.
+     * <p>
+     * {@inheritDoc}
      */
     @Override
     protected void configure(HttpSecurity http) throws Exception {
         http.csrf().disable()
-            // make sure we use stateless session; session won't be used to store user's state.
+            // Use stateless sessions.
             .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
             
-            // Add a filter to validate the tokens with every request.
-            .addFilterAfter(new JwtTokenAuthenticationFilter(jwtConfig),
+            // Add filter to validate tokens with every request.
+            .addFilterAfter(new JWTAuthenticationFilter(jwtConfiguration),
                     UsernamePasswordAuthenticationFilter.class)
             
             .authorizeRequests()
-            .antMatchers("/auth/**").permitAll()
-            // Anyone who is trying to access the securedPage must be an ADMIN.
-            // TODO can we change the path to /securedPage?
+            // Permit only users with ADMIN role.
             .antMatchers("/securedPage/**").hasRole("ADMIN")
-            // Permit default path. 
+            // Permit auth and login path for sending credentials. 
+            .antMatchers("/auth/**").permitAll()
             .antMatchers("/login").permitAll().and()
             // Configures where to forward if authentication is required.
-            .formLogin().loginPage("/login")
-            // Configures url for processing of login data.
-            .loginProcessingUrl("process_login") // TODO can we remove this?
-            // Configures where to go if there is no previous visited page.
-            .defaultSuccessUrl("/", true).and()
-            // Configures url for processing of logout.
-            .logout().logoutUrl("/process_logout")
-            .deleteCookies("JSESSIONID"); // TODO i think we can remove this
-    }
-
-    //----------------------------------------------------------------------------------------------
-
-    /**
-     * Get a new <code>JwtConfig</code>.
-     * 
-     * @return The stated configuration
-     */
-    @Bean
-    public JwtConfig jwtConfig() {
-        return new JwtConfig();
+            .formLogin().loginPage("/login");
     }
 
-    //----------------------------------------------------------------------------------------------
+    //---------------------------------------------------------------------------------------------
 }
diff --git a/src/main/java/de/rtuni/ms/apig/controller/LoginController.java b/src/main/java/de/rtuni/ms/apig/controller/LoginController.java
index f2a138b..8115540 100644
--- a/src/main/java/de/rtuni/ms/apig/controller/LoginController.java
+++ b/src/main/java/de/rtuni/ms/apig/controller/LoginController.java
@@ -9,23 +9,24 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 /**
- * Class that handles all kind of requests.
+ * Login controller that handles all requests for the login path.
  * 
  * @author Julian
  */
 @Controller
 public class LoginController {
-    //----------------------------------------------------------------------------------------------
+    //---------------------------------------------------------------------------------------------
 
     /**
-     * Catch the request for the login page and returns the name of the corresponding template.
+     * Catch the request for the default login page and return the name of the corresponding
+     * template.
      * 
-     * @return The name of the template
+     * @return The name of the template to show
      */
     @RequestMapping("/login")
     public String login() {
         return "login";
     }
 
-    //----------------------------------------------------------------------------------------------
+    //---------------------------------------------------------------------------------------------
 }
\ No newline at end of file
-- 
GitLab