Skip to content

Commit

Permalink
Spring Security and Swagger development
Browse files Browse the repository at this point in the history
Added the Spring security Configuration and also swagger-ui
  • Loading branch information
HitheshSampathi committed Dec 11, 2022
1 parent 5829e60 commit 9bc2a0c
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 1 deletion.
9 changes: 9 additions & 0 deletions pom.xml
Expand Up @@ -41,6 +41,15 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>

<build>
Expand Down
Expand Up @@ -2,8 +2,9 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;

@SpringBootApplication
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })
public class SpringBootDemoApplication {

public static void main(String[] args) {
Expand Down
@@ -0,0 +1,23 @@
package com.hithesh.springbootdemo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;

import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@EnableWebSecurity
public class SecurityConfig {

@Bean
public SecurityFilterChain configure(HttpSecurity http) throws Exception {
return http
.csrf().disable().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and().authorizeRequests().antMatchers("/demo/getDemoResponse").permitAll()
.anyRequest().authenticated().and()
.httpBasic().and().build();
}
}
32 changes: 32 additions & 0 deletions src/main/java/com/hithesh/springbootdemo/config/SwaggerConfig.java
@@ -0,0 +1,32 @@
package com.hithesh.springbootdemo.config;

import org.springframework.cglib.core.Predicate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {

@Bean
public Docket api(){
return new Docket(DocumentationType.SWAGGER_2).select()
.apis(RequestHandlerSelectors.basePackage("com.hithesh.springbootdemo.controller"))
.paths(PathSelectors.any())
.build().apiInfo(apiEndPointsInfo());
}

private ApiInfo apiEndPointsInfo() {
return new ApiInfoBuilder().title("DEMO Project")
.description("This is a demo project for Swagger implementation")
.license("Demo license").version("1.0.0").build();
}
}
Expand Up @@ -2,6 +2,7 @@

import com.hithesh.springbootdemo.Repository.DemoRepository;
import com.hithesh.springbootdemo.dto.Demo;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
Expand All @@ -17,11 +18,13 @@ public class DemoController {
private DemoRepository repository;

@GetMapping("/getDemoResponse")
@ApiOperation(value="This Endpoint is used to get the static response")
public String getDemoResponse(){
return " This is an demo response ";
}

@GetMapping("/getDemoDbResponse")
@ApiOperation(value="This Endpoint is used to get the data stored in database")
public List<Demo> getDemoDbResponse(){
return repository.getDemoDetails();
}
Expand Down
6 changes: 6 additions & 0 deletions src/main/resources/application.properties
@@ -1,2 +1,8 @@
spring.security.user.name=admin
spring.security.user.password=admin@123

spring.datasource.url=jdbc:h2:mem:demodb
spring.datasource.driverClassName=org.h2.Driver

spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER

0 comments on commit 9bc2a0c

Please sign in to comment.