gpt4 book ai didi

java - 使用 openapi 3.0、aws-cognito oauth2 配置 Springboot 时遇到问题

转载 作者:行者123 更新时间:2023-12-05 06:18:42 26 4
gpt4 key购买 nike

我试图将 OpenAPI 3.0 集成到我现有的 springboot restpai 应用程序中。到目前为止,我可以使用此代码片段配置 openapi-with oAuth2。

    @Bean
public OpenAPI customOpenAPI() {

OAuthFlow oAuthFlowObject = new OAuthFlow();
oAuthFlowObject
.setAuthorizationUrl("https://<my-domain>.auth.us-east-2.amazoncognito.com/oauth2/authorize");
oAuthFlowObject.setRefreshUrl("https://<my-domain>.auth.us-east-2.amazoncognito.com/oauth2/refresh");
oAuthFlowObject.setTokenUrl("https://<my-domain>.auth.us-east-2.amazoncognito.com/oauth2/token");

OAuthFlows oAuthFlows = new OAuthFlows();
oAuthFlows.authorizationCode(oAuthFlowObject);

return new OpenAPI()
.components(new Components()
.addSecuritySchemes("oauth2", new SecurityScheme().in(SecurityScheme.In.HEADER)
.type(SecurityScheme.Type.OAUTH2)
.flows(oAuthFlows)
.bearerFormat("JWT")
.scheme("bearer")
))
.info(new Info().title("Contact Application API").description(
"This is a sample Spring Boot RESTful service using springdoc-openapi and OpenAPI 3."))
;
}

看来我可以成功从cognito那里拿到token了。 bearer token

但问题是当我尝试 swagger-ui 的任何 api 时,它不包含不记名 token 。

no-bearer-token

有什么我遗漏的吗?我如何设置路径前缀以便在调用这些路径时附加 token 。此外,我只想从 swagger 发送 Authorization-bearer header 中的“id_token”。

最佳答案

要为 swagger 配置 aws-cognito 并使其发送 id-token 而不是 access-token,我们需要配置两个安全机制。这是示例代码片段。这是一个解决方法。默认情况下发送 access-token 而我们需要发送 id-token ,我们配置了两个选项。


@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
//bearer auth with oAuth2
.addSecurityItem(new SecurityRequirement().addList("bearerAuth"))
.components(new Components().addSecuritySchemes("oAuth2", new SecurityScheme() .type(SecurityScheme.Type.OAUTH2) .flows(getOAuthFlows())
)

/// Bearer AUTH security config settings. ## for id-token.
.addSecuritySchemes("bearerAuth", new SecurityScheme()
.type(SecurityScheme.Type.HTTP)
.scheme("bearer")
.bearerFormat("JWT")
)
).info(getInfo());
}


private Info getInfo() {
return new Info()
.title("Title")
.version("1.0")
.description("Project description..");
}

它是这样的: swagger auth

之后,您需要从浏览器控制台配置 id-token。 copy-ing id token as bearer auth

关于java - 使用 openapi 3.0、aws-cognito oauth2 配置 Springboot 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61168039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com