Документирование API-интерфейсов Spring OAuth 2.0 с использованием Swagger

Я работаю над настройкой сервера авторизации OAuth 2.0 с использованием безопасности Spring. Я хотел бы задокументировать API-интерфейсы OAuth 2.0 с помощью Swagger. Как мне это сделать?


person sunsin1985    schedule 03.03.2016    source источник
comment
Могу я узнать причину понижения?   -  person sunsin1985    schedule 04.03.2016


Ответы (1)


В настоящее время я работаю над этим и использую библиотеку Springfox для документирования.

<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.4.0</version> </dependency>

<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.4.0</version> </dependency>

Моя конфигурация Swagger выглядит так:

    @Configuration
@EnableSwagger2
@EnableWebMvc
public class SwaggerConfig {

    @Bean
    public Docket documentation() {
        return new Docket(DocumentationType.SWAGGER_2)
            .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build()
            .useDefaultResponseMessages(false)
            .pathMapping("/")
            .apiInfo(apiInfo());
    }



    /**
     * API INFO
     * @return
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("xxx")
                .description("xxx")
                .version("xxx")                 
                .contact("xxx")
                .build();
    }
}

Одна часть одной из моих конечных точек (Примечание: не было правильного способа аннотировать карту. В версии 2.4.0 добавлена ​​​​поддержка, но я еще не пробовал.)

@Api(value = "xxx")
@FrameworkEndpoint
@SessionAttributes("authorizationRequest")
public class OAuthAuthorizationEndpoint {

    private AuthorizationEndpoint authorizationEndpoint;

    /**
     * @param endpoint
     *      base AuthorizationCheckpoint
     */
    public OAuthAuthorizationEndpoint(AuthorizationEndpoint endpoint){
        this.authorizationEndpoint = endpoint;
    }
@ApiOperation(value = "xxx", httpMethod = "GET", notes = "xxx")
    @ApiResponses(value = {
            @ApiResponse(code = 400, message = "Invalid input:...", response = Auth400Response.class),
            @ApiResponse(code = 200, message = "Ok", response = Auth200Response.class)
            })  
    @RequestMapping(value = "/oauth/authorize", produces = "application/json")
    @ResponseBody
    public ModelAndView authorize(@ApiIgnore Map<String, Object> model,
            @ApiParam(value = "xxx", required = true, defaultValue = "xxx") @RequestParam String response_type, 
            @ApiParam(value = "xxx", required = true) @RequestParam String client_id, 
            @ApiParam(value = "xxx", required = true) @RequestParam String redirect_uri, 
            @ApiParam(value = "xxx", required = false, defaultValue = "/") @RequestParam String realm,
            @ApiParam(value = "xxx", required = false) @RequestParam String state,
            @ApiIgnore SessionStatus sessionStatus, @ApiIgnore Principal principal){
        Map<String, String> parameters = new HashMap<String, String>();
        parameters.put("response_type", response_type);
        parameters.put("client_id", client_id);
        parameters.put("realm", realm);
        parameters.put("redirect_uri", redirect_uri);
        parameters.put("state", state);
        return this.authorizationEndpoint.authorize(model, parameters, sessionStatus, principal);

Это может помочь вам.

person Maik    schedule 09.03.2016
comment
Привет, как насчет фильтров безопасности, правильно ли они применяются для такой конечной точки оболочки? Спасибо! - person Dmitry Adonin; 13.11.2019
comment
Похоже, такой подход не работает - приложение не запускается из-за неоднозначного сопоставления - person Dmitry Adonin; 14.11.2019