songining

** ๊ธฐ๋ณธ์ ์œผ๋กœ 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("์ •ํ•ด๋†“์€ ํ‚ค์ด๋ฆ„")๋ฅผ ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์ž!!!

******