From 4070018bd2d7ce4959e5863dacffc024159a7c74 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E5=88=98=E6=B4=AA=E9=9D=92?= Date: Thu, 19 Sep 2019 18:10:30 +0800 Subject: [PATCH] =?utf8?q?fix:=20=E5=A2=9E=E5=8A=A0swagger=E7=9A=84?= =?utf8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E7=9A=84=E6=8E=88=E6=9D=83=E6=96=B9?= =?utf8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../bff/configuration/Swagger2Config.java | 79 +++++++++++++++++-- .../sa/configuration/Swagger2Config.java | 51 +++++++++++- 2 files changed, 123 insertions(+), 7 deletions(-) diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/Swagger2Config.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/Swagger2Config.java index 1c8a23b..5a1022a 100644 --- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/Swagger2Config.java +++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/Swagger2Config.java @@ -1,19 +1,29 @@ package com.supwisdom.institute.backend.admin.bff.configuration; +import java.util.List; + import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.AuthorizationScopeBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.ApiKey; +import springfox.documentation.service.AuthorizationScope; +import springfox.documentation.service.BasicAuth; import springfox.documentation.service.Contact; +import springfox.documentation.service.SecurityReference; +import springfox.documentation.service.SecurityScheme; import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spi.service.contexts.SecurityContext; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger.web.UiConfiguration; import springfox.documentation.swagger.web.UiConfigurationBuilder; import springfox.documentation.swagger2.annotations.EnableSwagger2; +import static com.google.common.collect.Lists.*; @Configuration @EnableSwagger2 @@ -25,27 +35,65 @@ public class Swagger2Config { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) + .securitySchemes(securitySchemes()) + .securityContexts(securityContexts()) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage(basePackage)) .paths(PathSelectors.any()) .build() - ; + ; } private ApiInfo apiInfo() { - Contact contact = new Contact("Backend Admin Aggregator API", "https://sw-backend-aggr.supwisdom.com/swagger-ui.html", ""); // name, url, email + Contact contact = new Contact("Backend Admin BFF", "https://sw-backend-api.supwisdom.com/swagger-ui.html", ""); // name, url, email return new ApiInfoBuilder() - .title("Backend Admin Aggregator APIs") - .description("管理后台 - 聚合接口") + .title("Backend Admin BFF APIs") + .description("管理后台 - 后端接口

" + + "X-FORWARD-USER(测试用):

" + + "明文:{\"attributes\":{\"accountId\":\"1\"},\"roles\":[\"ROLE_ADMIN\",\"administrator\",\"user\"],\"username\":\"swadmin\"}

" + + "Base64:eyJhdHRyaWJ1dGVzIjp7ImFjY291bnRJZCI6IjEifSwicm9sZXMiOlsiUk9MRV9BRE1JTiIsImFkbWluaXN0cmF0b3IiLCJ1c2VyIl0sInVzZXJuYW1lIjoic3dhZG1pbiJ9

" + + "使用 Base64字符串 进行 Authorize,然后进行接口测试

" + + "若需要其他帐号,请自行拼接明文,再进行 Base64 编码

" + + "" + ) .termsOfServiceUrl("http://www.supwisdom.com/") .contact(contact) .version("1.0") .build(); } + + private List securitySchemes() { + //return newArrayList(new BasicAuth("sample")); + return newArrayList( + //new BasicAuth("Basic"), + //new ApiKey("JWTToken", "Authorization", "header"), + new ApiKey("SimpleUserTransmit", "X-FORWARD-USER", "header")); + } + + private List securityContexts() { + + List globalSecurityReference = newArrayList( + new SecurityReference("SimpleUserTransmit", new AuthorizationScope[]{new AuthorizationScope("global", "accessEverything")})); + +// AuthorizationScope[] authScopes = new AuthorizationScope[1]; +// authScopes[0] = new AuthorizationScopeBuilder() +// .scope("read") +// .description("read access") +// .build(); +// SecurityReference securityReference = SecurityReference.builder() +// .reference("sample") +// .scopes(authScopes) +// .build(); + + return newArrayList( + SecurityContext.builder() + .securityReferences(newArrayList(globalSecurityReference)) + .build()); + } @Bean - UiConfiguration uiConfig() { + public UiConfiguration uiConfig() { return UiConfigurationBuilder.builder().build(); @@ -59,5 +107,26 @@ public class Swagger2Config { // 60000L); // requestTimeout => in milliseconds, defaults to null // // (uses jquery xh timeout) } + + +// @Bean +// public SecurityConfiguration oauth2() { +// return SecurityConfigurationBuilder.builder() +// .clientId("common") +// .clientSecret("secret") +// .scopeSeparator(" ") +// .useBasicAuthenticationWithAccessCodeGrant(true) +// .build(); +// } +// +// @Bean +// public SecurityConfiguration basic() { +// return SecurityConfigurationBuilder.builder() +// .clientId("common") +// .clientSecret("secret") +// .scopeSeparator(" ") +// .useBasicAuthenticationWithAccessCodeGrant(true) +// .build(); +// } } diff --git a/sa/admin/src/main/java/com/supwisdom/institute/backend/admin/sa/configuration/Swagger2Config.java b/sa/admin/src/main/java/com/supwisdom/institute/backend/admin/sa/configuration/Swagger2Config.java index 1eb942e..287cea5 100644 --- a/sa/admin/src/main/java/com/supwisdom/institute/backend/admin/sa/configuration/Swagger2Config.java +++ b/sa/admin/src/main/java/com/supwisdom/institute/backend/admin/sa/configuration/Swagger2Config.java @@ -1,5 +1,9 @@ package com.supwisdom.institute.backend.admin.sa.configuration; +import static com.google.common.collect.Lists.newArrayList; + +import java.util.List; + import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -8,8 +12,13 @@ import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.ApiKey; +import springfox.documentation.service.AuthorizationScope; import springfox.documentation.service.Contact; +import springfox.documentation.service.SecurityReference; +import springfox.documentation.service.SecurityScheme; import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spi.service.contexts.SecurityContext; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger.web.UiConfiguration; import springfox.documentation.swagger.web.UiConfigurationBuilder; @@ -25,25 +34,63 @@ public class Swagger2Config { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) + .securitySchemes(securitySchemes()) + .securityContexts(securityContexts()) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage(basePackage)) .paths(PathSelectors.any()) .build() - ; + ; } private ApiInfo apiInfo() { Contact contact = new Contact("Backend Admin Super Admin", "https://sw-backend-sa.supwisdom.com/swagger-ui.html", ""); // name, url, email return new ApiInfoBuilder() .title("Backend Admin Super Admin APIs") - .description("管理后台 - 服务接口") + .description("管理后台 - 服务接口

" + + "X-FORWARD-USER(测试用):

" + + "明文:{\"attributes\":{\"accountId\":\"1\"},\"roles\":[\"ROLE_ADMIN\",\"administrator\",\"user\"],\"username\":\"swadmin\"}

" + + "Base64:eyJhdHRyaWJ1dGVzIjp7ImFjY291bnRJZCI6IjEifSwicm9sZXMiOlsiUk9MRV9BRE1JTiIsImFkbWluaXN0cmF0b3IiLCJ1c2VyIl0sInVzZXJuYW1lIjoic3dhZG1pbiJ9

" + + "使用 Base64字符串 进行 Authorize,然后进行接口测试

" + + "若需要其他帐号,请自行拼接明文,再进行 Base64 编码

" + + "" + ) .termsOfServiceUrl("http://www.supwisdom.com/") .contact(contact) .version("1.0") .build(); } + private List securitySchemes() { + //return newArrayList(new BasicAuth("sample")); + return newArrayList( + //new BasicAuth("Basic"), + //new ApiKey("JWTToken", "Authorization", "header"), + new ApiKey("SimpleUserTransmit", "X-FORWARD-USER", "header")); + } + + private List securityContexts() { + + List globalSecurityReference = newArrayList( + new SecurityReference("SimpleUserTransmit", new AuthorizationScope[]{new AuthorizationScope("global", "accessEverything")})); + +// AuthorizationScope[] authScopes = new AuthorizationScope[1]; +// authScopes[0] = new AuthorizationScopeBuilder() +// .scope("read") +// .description("read access") +// .build(); +// SecurityReference securityReference = SecurityReference.builder() +// .reference("sample") +// .scopes(authScopes) +// .build(); + + return newArrayList( + SecurityContext.builder() + .securityReferences(newArrayList(globalSecurityReference)) + .build()); + } + @Bean UiConfiguration uiConfig() { -- 2.17.1