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(); Listpars = 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的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!