728x90
반응형
** 기본적으로 security 설정과 swagger 설정이 다 되어있음을 바탕으로 한다.
SwaggerConfig.java
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.useDefaultResponseMessages(false)
.select()
.apis(RequestHandlerSelectors.basePackage("com.cherishpet.backend"))
.paths(PathSelectors.ant("/api/**"))
.build()
.apiInfo(metaData())
.securityContexts(Arrays.asList(securityContext()))
.securitySchemes(Arrays.asList(apiKey()));
}
private ApiInfo metaData() {
return new ApiInfoBuilder()
.title("CherishPet REST API")
.description("CherishPet rest api documentation")
.license("Apache License Version 2.0")
.build();
}
private ApiKey apiKey() {
return new ApiKey("JWT", "Authorization", "header");
}
private SecurityContext securityContext() {
return springfox
.documentation
.spi.service
.contexts
.SecurityContext
.builder()
.securityReferences(defaultAuth()).forPaths(PathSelectors.any()).build();
}
List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return Arrays.asList(new SecurityReference("JWT", authorizationScopes));
}
}
여기서 apiKey()함수에서 리턴하는 new ApiKey("JWT", "Authorization", "header") 의 "Authorization"은 헤더에서 JWT 토큰 값을 가져올때 지정해 놓은 key 이름과 같아야한다.
******
security 설정에서 HttpServletRequest 객체에서 헤더(토큰)를 가져올 때
어떤 이름으로 getHeader("정해놓은 키이름")를 하는지 확인하자!!!
******
728x90
반응형
'BACKEND > Spring' 카테고리의 다른 글
| [Spring] detached entity passed to persist 에러 (0) | 2022.05.26 |
|---|---|
| 세션과 JWT의 차이 (0) | 2022.05.23 |
| JPA, MYSQL DateTime 변경 (0) | 2022.02.20 |
| 스프링, mysql 연동 gradle, applicaion.yml 설정하기 (0) | 2022.02.08 |
| JWT Tutorial (0) | 2022.02.01 |