Я работаю над настройкой сервера авторизации OAuth 2.0 с использованием безопасности Spring. Я хотел бы задокументировать API-интерфейсы OAuth 2.0 с помощью Swagger. Как мне это сделать?
Документирование API-интерфейсов Spring OAuth 2.0 с использованием Swagger
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
Привет, как насчет фильтров безопасности, правильно ли они применяются для такой конечной точки оболочки? Спасибо!
- person Dmitry Adonin; 13.11.2019
Похоже, такой подход не работает - приложение не запускается из-за неоднозначного сопоставления
- person Dmitry Adonin; 14.11.2019