diff --git a/samples/client/pom.xml b/samples/client/pom.xml
index c680787..2f2ccae 100644
--- a/samples/client/pom.xml
+++ b/samples/client/pom.xml
@@ -67,11 +67,22 @@
       <artifactId>infras-security</artifactId>
     </dependency>
 
-    <!-- <dependency>
+    <!-- 
+    <dependency>
       <groupId>org.springframework.security</groupId>
       <artifactId>spring-security-cas</artifactId>
-    </dependency> -->
+    </dependency>
+     -->
 
+    <dependency>
+      <groupId>org.springframework.security.oauth.boot</groupId>
+      <artifactId>spring-security-oauth2-autoconfigure</artifactId>
+    </dependency>
+
+    <!-- <dependency>
+      <groupId>org.springframework.security.oauth</groupId>
+      <artifactId>spring-security-oauth2</artifactId>
+    </dependency> -->
 
     <dependency>
       <groupId>org.springframework.boot</groupId>
diff --git a/samples/client/src/main/java/com/supwisdom/leaveschool/client/ClientApplication.java b/samples/client/src/main/java/com/supwisdom/leaveschool/client/ClientApplication.java
index 4d83c0d..9b946d0 100644
--- a/samples/client/src/main/java/com/supwisdom/leaveschool/client/ClientApplication.java
+++ b/samples/client/src/main/java/com/supwisdom/leaveschool/client/ClientApplication.java
@@ -7,15 +7,20 @@
 import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.Bean;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
 
 import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet;
-import com.supwisdom.infras.security.EnableInfrasWebSecurity;
+import com.supwisdom.infras.security.configure.oauth2.EnableInfrasOAuth2;
+import com.supwisdom.infras.security.configure.web.EnableInfrasWebSecurity;
 
 @SpringBootApplication
 @EnableCircuitBreaker
 @EnableFeignClients(value = "com.supwisdom.leaveschool.client.service")
 @EnableHystrixDashboard
 @EnableInfrasWebSecurity
+@EnableInfrasOAuth2
 public class ClientApplication {
 
   public static void main(String[] args) {
@@ -34,5 +39,17 @@
     
     return servletRegistrationBean;
   }
+  
+  @Bean
+  public CorsFilter corsFilter() {
+      final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+      final CorsConfiguration config = new CorsConfiguration();
+      config.setAllowCredentials(true);
+      config.addAllowedOrigin("*");
+      config.addAllowedHeader("*");
+      config.addAllowedMethod("*");
+      source.registerCorsConfiguration("/**", config);
+      return new CorsFilter(source);
+  }
 
 }
diff --git a/samples/client/src/main/java/com/supwisdom/leaveschool/client/controller/web/MainController.java b/samples/client/src/main/java/com/supwisdom/leaveschool/client/controller/web/MainController.java
index 217f944..f3ea07f 100755
--- a/samples/client/src/main/java/com/supwisdom/leaveschool/client/controller/web/MainController.java
+++ b/samples/client/src/main/java/com/supwisdom/leaveschool/client/controller/web/MainController.java
@@ -16,38 +16,19 @@
 package com.supwisdom.leaveschool.client.controller.web;
 
 import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
 
 @Controller
 public class MainController {
 
-	@RequestMapping("/")
-	public String root() {
-		return "redirect:/web/index";
-	}
+  @RequestMapping("/")
+  public String root() {
+    return "redirect:/web/index";
+  }
 
-	@RequestMapping("/web/index")
-	public String index() {
-		return "web/index";
-	}
-
-	@RequestMapping(value = "/web/login")
-	public String login() {
-		return "web/login";
-	}
-
-	@RequestMapping(value = "/web/login", method = RequestMethod.POST)
-	public String postLogin() {
-		// TODO Enable form login with Spring Security (trigger error for now)
-		return "redirect:/web/login-error";
-	}
-
-	@RequestMapping("/web/login-error")
-	public String loginError(Model model) {
-		model.addAttribute("loginError", true);
-		return "web/login";
-	}
+  @RequestMapping("/web/index")
+  public String index() {
+    return "web/index";
+  }
 
 }
diff --git a/samples/client/src/main/resources/templates/oauth/login.html b/samples/client/src/main/resources/templates/oauth/login.html
new file mode 100755
index 0000000..bb91660
--- /dev/null
+++ b/samples/client/src/main/resources/templates/oauth/login.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
+    <head>
+        <title>OAuth2 Login page</title>
+        <meta charset="utf-8" />
+        <link rel="stylesheet" href="/assets/css/main.css" th:href="@{/assets/css/main.css}" />
+	</head>
+    <body>
+        <h1>OAuth2 Login page</h1>
+        <p>Example user: user / password</p>
+        
+        <div th:if="${loginError}" class="error">Wrong user or password</div>
+        <div th:if="${param.error}" class="alert alert-error">Invalid username and password.</div>
+        <div th:if="${param.logout}" class="alert alert-success">You have been logged out.</div>
+        
+        <form th:action="@{/oauth/login}" method="post">
+            <label for="username">Username</label>:
+            <input type="text" id="username" name="username" autofocus="autofocus" /> <br />
+            <label for="password">Password</label>:
+            <input type="password" id="password" name="password" /> <br />
+            <input type="submit" value="Log in" />
+        </form>
+    </body>
+</html>
diff --git a/samples/client/src/main/resources/templates/web/login.html b/samples/client/src/main/resources/templates/web/login.html
index 1bc5e4d..7eb81aa 100755
--- a/samples/client/src/main/resources/templates/web/login.html
+++ b/samples/client/src/main/resources/templates/web/login.html
@@ -8,7 +8,8 @@
     <body>
         <h1>Login page</h1>
         <p>Example user: user / password</p>
-        <p th:if="${loginError}" class="error">Wrong user or password</p>
+        
+        <div th:if="${loginError}" class="error">Wrong user or password</div>
         <div th:if="${param.error}" class="alert alert-error">Invalid username and password.</div>
         <div th:if="${param.logout}" class="alert alert-success">You have been logged out.</div>
         
@@ -19,6 +20,6 @@
             <input type="password" id="password" name="password" /> <br />
             <input type="submit" value="Log in" />
         </form>
-        <p><a href="/index" th:href="@{/index}">Back to home page</a></p>
+        <p><a href="/web/index" th:href="@{/web/index}">Back to home page</a></p>
     </body>
 </html>
