Я создал свою конфигурацию Swagger с SSO для моего сервера AD, как показано ниже. Когда пользователь нажимает кнопку авторизации, он может перейти в соответствующее место, чтобы выполнить аутентификацию, и получает id_token , перенаправляет и передает его swagger, где id_token будет передаваться по всем запросам API. заголовок как токен на предъявителя.
Все работает нормально, но проблема в том, что мне вместо id_token мне нужно передать другой токен в заголовок всех запросов API. У меня есть пользовательская функция с именем getApiTokens
, которая выдает другой токен на основе id_token , переданного в качестве входного параметра. Вновь созданный токен, возвращаемый функцией getApiTokens
, должен передаваться по всему заголовку API в качестве носителя
Может кто-нибудь помочь мне в этом
Я использую springfox-swagger2 для моего проекта
My SwaggerConfig.java код показан ниже
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Autowired
private Configuration config;
@Bean
public Docket userApi() {
final List<ResponseMessage> list = Lists.newArrayList();
list.add(new ResponseMessageBuilder().code(401).message("Unauthorized").responseModel(new ModelRef("Result"))
.build());;
return new Docket(DocumentationType.SWAGGER_2).groupName("omnesys-api").apiInfo(apiInfo()).select()
.apis(RequestHandlerSelectors.basePackage("com.omnesys.api")).paths(PathSelectors.any())
.build().securitySchemes(newArrayList(oauth())).securityContexts(newArrayList(securityContext()))
.globalResponseMessage(RequestMethod.GET, list).globalResponseMessage(RequestMethod.POST, list);
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("Omnesys API")
.description("Omnesys API")
.termsOfServiceUrl("https://omnesys.com/service").contact(contact()).license("Apache License Version 2.0")
.licenseUrl("https://omnesys.com/service/LICENSE").version("2.0").build();
}
private Contact contact() {
return new Contact("Omnesys", "https://omnesys.com", "admin@omnesys.com");
}
@Bean
SecurityContext securityContext() {
final AuthorizationScope readScope = new AuthorizationScope("read", "read your admin");
final AuthorizationScope[] scopes = new AuthorizationScope[1];
scopes[0] = readScope;
final SecurityReference securityReference = SecurityReference.builder().reference("omnesys_auth").scopes(scopes)
.build();
return SecurityContext.builder().securityReferences(newArrayList(securityReference)).build();
}
@Bean
SecurityScheme oauth() {
return new OAuthBuilder().name("omnesys_auth").grantTypes(grantTypes()).scopes(scopes()).build();
}
List<AuthorizationScope> scopes() {
final List<AuthorizationScope> scopes = Lists.<AuthorizationScope>newArrayList();
scopes.add(new AuthorizationScope("resource-access", "Get Resource Access"));
return scopes;
}
List<GrantType> grantTypes() {
final GrantType grantType = new ImplicitGrantBuilder()
.loginEndpoint(
new LoginEndpoint(config.getSecurity().getOauth2().getClient().getUserAuthorizationUri()))
.build();
return newArrayList(grantType);
}
@Bean
public SecurityConfiguration securityInfo() {
return new SecurityConfiguration("97aaf5ff-b64d-4ec2-a409-b434d7744930", "d3cc95e9-6ed8-448f-a448-1ab02b72967e", "swagger", "swagger", "", ApiKeyVehicle.HEADER, "", " ");
}
}