├── README.md ├── src ├── main │ ├── resources │ │ └── application.properties │ └── java │ │ └── com │ │ └── javatechie │ │ └── spring │ │ └── security │ │ └── api │ │ ├── controller │ │ ├── NoAuthController.java │ │ └── ApplicationController.java │ │ ├── SpringBasicSecurityApplication.java │ │ └── config │ │ └── SpringSecurityConfig.java └── test │ └── java │ └── com │ └── javatechie │ └── spring │ └── security │ └── api │ └── SpringBasicSecurityApplicationTests.java └── pom.xml /README.md: -------------------------------------------------------------------------------- 1 | # spring-basic-security 2 | Spring Security : Basic Authentication and Authorization using spring boot 3 | -------------------------------------------------------------------------------- /src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | #spring.security.user.name=Java Techie 2 | #spring.security.user.password=password -------------------------------------------------------------------------------- /src/test/java/com/javatechie/spring/security/api/SpringBasicSecurityApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.javatechie.spring.security.api; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.springframework.boot.test.context.SpringBootTest; 6 | import org.springframework.test.context.junit4.SpringRunner; 7 | 8 | @RunWith(SpringRunner.class) 9 | @SpringBootTest 10 | public class SpringBasicSecurityApplicationTests { 11 | 12 | @Test 13 | public void contextLoads() { 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/javatechie/spring/security/api/controller/NoAuthController.java: -------------------------------------------------------------------------------- 1 | package com.javatechie.spring.security.api.controller; 2 | 3 | import org.springframework.web.bind.annotation.GetMapping; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.bind.annotation.RestController; 6 | 7 | @RestController 8 | @RequestMapping("/noAuth/rest") 9 | public class NoAuthController { 10 | 11 | @GetMapping("/sayHi") 12 | public String sayHi() { 13 | return "hi"; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/javatechie/spring/security/api/controller/ApplicationController.java: -------------------------------------------------------------------------------- 1 | package com.javatechie.spring.security.api.controller; 2 | 3 | import org.springframework.web.bind.annotation.GetMapping; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.bind.annotation.RestController; 6 | 7 | @RestController 8 | @RequestMapping("/rest/auth") 9 | public class ApplicationController { 10 | 11 | @GetMapping("/getMsg") 12 | public String greeting() { 13 | return "spring security example"; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/javatechie/spring/security/api/SpringBasicSecurityApplication.java: -------------------------------------------------------------------------------- 1 | package com.javatechie.spring.security.api; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; 6 | 7 | @SpringBootApplication 8 | @EnableWebSecurity 9 | public class SpringBasicSecurityApplication { 10 | 11 | public static void main(String[] args) { 12 | SpringApplication.run(SpringBasicSecurityApplication.class, args); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/javatechie/spring/security/api/config/SpringSecurityConfig.java: -------------------------------------------------------------------------------- 1 | package com.javatechie.spring.security.api.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; 6 | import org.springframework.security.config.annotation.web.builders.HttpSecurity; 7 | import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; 8 | import org.springframework.security.crypto.password.NoOpPasswordEncoder; 9 | 10 | @SuppressWarnings("deprecation") 11 | @Configuration 12 | public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { 13 | @Override 14 | protected void configure(AuthenticationManagerBuilder auth) throws Exception { 15 | auth.inMemoryAuthentication().withUser("Java Techie").password("Password").roles("ADMIN"); 16 | auth.inMemoryAuthentication().withUser("Basant").password("Password2").roles("USER"); 17 | } 18 | 19 | // security for all API 20 | 21 | /* 22 | * @Override protected void configure(HttpSecurity http) throws Exception { 23 | * http.csrf().disable(); 24 | * http.authorizeRequests().anyRequest().fullyAuthenticated().and(). 25 | * httpBasic(); } 26 | */ 27 | 28 | // security based on URL 29 | 30 | /* 31 | * @Override protected void configure(HttpSecurity http) throws Exception { 32 | * http.csrf().disable(); 33 | * http.authorizeRequests().antMatchers("/rest/**").fullyAuthenticated().and 34 | * ().httpBasic(); } 35 | */ 36 | 37 | // security based on ROLE 38 | @Override 39 | protected void configure(HttpSecurity http) throws Exception { 40 | http.csrf().disable(); 41 | http.authorizeRequests().antMatchers("/rest/**").hasAnyRole("ADMIN").anyRequest().fullyAuthenticated().and() 42 | .httpBasic(); 43 | } 44 | 45 | @Bean 46 | public static NoOpPasswordEncoder passwordEncoder() { 47 | return (NoOpPasswordEncoder) NoOpPasswordEncoder.getInstance(); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | com.example 7 | spring-basic-security 8 | 0.0.1-SNAPSHOT 9 | jar 10 | 11 | spring-basic-security 12 | spring security example 13 | 14 | 15 | org.springframework.boot 16 | spring-boot-starter-parent 17 | 2.0.1.RELEASE 18 | 19 | 20 | 21 | 22 | UTF-8 23 | UTF-8 24 | 1.8 25 | 26 | 27 | 28 | 29 | org.springframework.boot 30 | spring-boot-starter-security 31 | 32 | 33 | org.springframework.boot 34 | spring-boot-starter-web 35 | 36 | 37 | 38 | org.springframework.boot 39 | spring-boot-devtools 40 | runtime 41 | 42 | 43 | org.springframework.boot 44 | spring-boot-starter-test 45 | test 46 | 47 | 48 | org.springframework.security 49 | spring-security-test 50 | test 51 | 52 | 53 | 54 | 55 | 56 | 57 | org.springframework.boot 58 | spring-boot-maven-plugin 59 | 60 | 61 | 62 | 63 | 64 | 65 | --------------------------------------------------------------------------------