diff --git a/guest/spring-security/README.md b/guest/spring-security/README.md
new file mode 100644
index 0000000000..9e5cd64a04
--- /dev/null
+++ b/guest/spring-security/README.md
@@ -0,0 +1,17 @@
+## Building
+
+To build the module, use Maven's `package` goal:
+
+```
+mvn clean package
+```
+
+## Running
+
+To run the application, use Spring Boot's `run` goal:
+
+```
+mvn spring-boot:run
+```
+
+The application will be accessible at [http://localhost:8080/](http://localhost:8080/)
diff --git a/guest/spring-security/pom.xml b/guest/spring-security/pom.xml
new file mode 100644
index 0000000000..c41637bfc2
--- /dev/null
+++ b/guest/spring-security/pom.xml
@@ -0,0 +1,77 @@
+
+
+ 4.0.0
+
+ com.stackify.guest
+ spring-security
+ 1.0-SNAPSHOT
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.0.0.M6
+
+
+
+ spring-security
+ Spring Security Sample Project
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-thymeleaf
+
+
+ org.thymeleaf
+ thymeleaf-spring5
+ 3.0.8.RELEASE
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+
+
+ com.h2database
+ h2
+ runtime
+
+
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+ false
+
+
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+ false
+
+
+
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
\ No newline at end of file
diff --git a/guest/spring-security/src/main/java/com/stackify/guest/springsecurity/Application.java b/guest/spring-security/src/main/java/com/stackify/guest/springsecurity/Application.java
new file mode 100644
index 0000000000..fbd0eee044
--- /dev/null
+++ b/guest/spring-security/src/main/java/com/stackify/guest/springsecurity/Application.java
@@ -0,0 +1,15 @@
+package com.stackify.guest.springsecurity;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+
+@SpringBootApplication
+@ComponentScan(basePackages = {"com.stackify.guest.springsecurity"})
+public class Application {
+
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+
+}
diff --git a/guest/spring-security/src/main/java/com/stackify/guest/springsecurity/config/WebMvcConfiguration.java b/guest/spring-security/src/main/java/com/stackify/guest/springsecurity/config/WebMvcConfiguration.java
new file mode 100644
index 0000000000..b8dfe9050d
--- /dev/null
+++ b/guest/spring-security/src/main/java/com/stackify/guest/springsecurity/config/WebMvcConfiguration.java
@@ -0,0 +1,16 @@
+package com.stackify.guest.springsecurity.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class WebMvcConfiguration implements WebMvcConfigurer {
+
+ @Override
+ public void addViewControllers(ViewControllerRegistry registry) {
+ registry.addViewController("/customLogin").setViewName("customLogin");
+ registry.addViewController("/loginSuccess").setViewName("index");
+ }
+
+}
\ No newline at end of file
diff --git a/guest/spring-security/src/main/java/com/stackify/guest/springsecurity/config/WebSecurityConfig.java b/guest/spring-security/src/main/java/com/stackify/guest/springsecurity/config/WebSecurityConfig.java
new file mode 100644
index 0000000000..164808d5b3
--- /dev/null
+++ b/guest/spring-security/src/main/java/com/stackify/guest/springsecurity/config/WebSecurityConfig.java
@@ -0,0 +1,40 @@
+package com.stackify.guest.springsecurity.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.security.provisioning.JdbcUserDetailsManager;
+
+import javax.sql.DataSource;
+
+@EnableWebSecurity
+public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
+
+ @Bean
+ public UserDetailsService jdbcUserDetailsService(DataSource dataSource) {
+ JdbcUserDetailsManager manager = new JdbcUserDetailsManager();
+ manager.setDataSource(dataSource);
+ return manager;
+ }
+
+ @Bean
+ public PasswordEncoder passwordEncoder() {
+ return new BCryptPasswordEncoder();
+ }
+
+ @Override
+ protected void configure(HttpSecurity http) throws Exception {
+ http.authorizeRequests()
+ .antMatchers("/css/**").permitAll()
+ .anyRequest().authenticated()
+ .and().formLogin()
+ .loginPage("/customLogin")
+ .defaultSuccessUrl("/loginSuccess", true)
+ .permitAll();
+ }
+
+}
\ No newline at end of file
diff --git a/guest/spring-security/src/main/resources/data.sql b/guest/spring-security/src/main/resources/data.sql
new file mode 100644
index 0000000000..b3f7db9105
--- /dev/null
+++ b/guest/spring-security/src/main/resources/data.sql
@@ -0,0 +1,2 @@
+INSERT INTO users VALUES ('jill', '$2a$04$qUlqAEEYF1YvrpJMosodoewgL6aO.qgHytl2k5L7kdXEWnJsFdxvq', TRUE);
+INSERT INTO authorities VALUES ('jill', 'USERS');
diff --git a/guest/spring-security/src/main/resources/schema.sql b/guest/spring-security/src/main/resources/schema.sql
new file mode 100644
index 0000000000..3de1b9a29f
--- /dev/null
+++ b/guest/spring-security/src/main/resources/schema.sql
@@ -0,0 +1,10 @@
+CREATE TABLE users (
+ username VARCHAR(256) PRIMARY KEY,
+ password VARCHAR(256),
+ enabled BOOLEAN
+);
+
+CREATE TABLE authorities (
+ username VARCHAR(256) REFERENCES users (username),
+ authority VARCHAR(256)
+);
diff --git a/guest/spring-security/src/main/resources/static/css/styles.css b/guest/spring-security/src/main/resources/static/css/styles.css
new file mode 100644
index 0000000000..72bcc4934f
--- /dev/null
+++ b/guest/spring-security/src/main/resources/static/css/styles.css
@@ -0,0 +1,3 @@
+.bad-login {
+ color: red;
+}
\ No newline at end of file
diff --git a/guest/spring-security/src/main/resources/templates/customLogin.html b/guest/spring-security/src/main/resources/templates/customLogin.html
new file mode 100644
index 0000000000..c689c78514
--- /dev/null
+++ b/guest/spring-security/src/main/resources/templates/customLogin.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/guest/spring-security/src/main/resources/templates/index.html b/guest/spring-security/src/main/resources/templates/index.html
new file mode 100644
index 0000000000..0769f9015f
--- /dev/null
+++ b/guest/spring-security/src/main/resources/templates/index.html
@@ -0,0 +1,11 @@
+
+
+Hello, !
+
+
\ No newline at end of file