swagger2如何集成OAuth2,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
GitHub地址
码云地址
swagger是一款优雅的接口api展示工具,在这里我们具体不展开讲解,有兴趣的自行百度。 该篇文章主要讲解的是如何集成OAuth3的验证即在请求中添加token,验证接口是否具有权限。
方式一:在每个请求上加一个Authorization 窗口自己手动输入token:
/**
* @Description Swagger api 配置
* @Author wwz
* @Date 2019/08/05
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig2 {
@Value("${swagger.is.enable}")
private boolean SWAGGER_IS_ENABLE; //是否激活开关,在application.yml中配置注入
@Bean
public Docket docket() {
//添加head参数配置start
ParameterBuilder tokenPar = new ParameterBuilder();
List<Parameter> pars = new ArrayList<>();
tokenPar.name("Authorization").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
pars.add(tokenPar.build());
return new Docket(DocumentationType.SWAGGER_2)
.enable(SWAGGER_IS_ENABLE)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.wwz.frame.controller"))
.paths(PathSelectors.any())
.build()
.globalOperationParameters(pars);//注意这里;
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
// 页面标题
.title("OAuth3权限管理API文档")
.contact(new Contact("wwz", "", "wwzwtf@qq.com"))
.description("OAuth3维护文档")
.version("1.0")
.extensions(Collections.emptyList())
.build();
}
}
效果截图:
方式二:配置application.yml文件 设置好token登录的地址,是否启用swagger,新建配置文件
/**
* @Description Swagger api 配置 模式二:增加登录
* @Author wwz
* @Date 2019/08/05
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value("${swagger.is.enable}")
private boolean SWAGGER_IS_ENABLE; //是否激活开关,在application.yml中配置注入
@Value("${swagger.auth.server}")
private String AUTH_SERVER;
@Value("${swagger.service.name}")
private String SERVICE_NAME;
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
.enable(SWAGGER_IS_ENABLE)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.wwz.frame.controller"))
.paths(PathSelectors.any())
.build()
// .pathMapping(SERVICE_NAME)
.securitySchemes(Collections.singletonList(securityScheme()))
.securityContexts(Collections.singletonList(securityContext()));
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
// 页面标题
.title("OAuth3权限管理API文档")
.contact(new Contact("wwz", "", "wwzwtf@qq.com"))
.description("OAuth3维护文档")
.version("1.0")
.extensions(Collections.emptyList())
.build();
}
/**
* 这个类决定了你使用哪种认证方式,我这里使用密码模式
*/
private SecurityScheme securityScheme() {
GrantType grantType = new ResourceOwnerPasswordCredentialsGrant(AUTH_SERVER);
return new OAuthBuilder()
.name("OAuth3")
.grantTypes(Collections.singletonList(grantType))
.scopes(Arrays.asList(scopes()))
.build();
}
/**
* 这里设置 swagger2 认证的安全上下文
*/
private SecurityContext securityContext() {
return SecurityContext.builder()
.securityReferences(Collections.singletonList(new SecurityReference("OAuth3", scopes())))
.forPaths(PathSelectors.any())
.build();
}
/**
* 这里是写允许认证的scope
*/
private AuthorizationScope[] scopes() {
return new AuthorizationScope[]{
};
}
}
在MySecurityResourceServerConfig 放行swagger相关。
界面截图:
登录截图:
测试:
swagger 整合OAuth2完成。
看完上述内容,你们掌握swagger2如何集成OAuth2的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/3500033/blog/3083850