我正在尝试设置一个AWS API网关,该网关需要在任何请求的标头中使用API密钥。我设置了swagger来生成json定义,AWS很好地导入了它。但是,当我尝试添加API密钥安全定义时,Amazon拒绝了我的swagger API文档,错误如下:
由于Swagger文件中的错误,您的API未导入。API密钥安全定义“api_key”有意外的名称或位置。忽略。
我想我做错了。。。因此,我尝试了这方面的几种变化。
给定使用springfox创建的Spring Boot配置:
@Bean
public Docket swaggerSpringMvcPlugin() {
List<ApiKey> securitySchemes = new ArrayList<>();
ApiKey apiKey = new ApiKey("apiKey", "api_key", "header");
list.add(apiKey);
//the above is probably where i'm missing something
return new Docket(DocumentationType.SWAGGER_2)
.useDefaultResponseMessages(false)
.apiInfo(apiInfo())
.securitySchemes(securitySchemes)
.select()
.paths(PathSelectors.regex("/api/swaggertest"))
.build();
}
上述api定义如下:
@RestController
public class SwaggerTestController {
@ApiOperation(notes = "my notes", value = "test", nickname = "testNickname",
tags = {"tests"}, authorizations = {@Authorization(value="api_key")} )
@ApiResponses({
@ApiResponse(code = 200, message = "Nice!", response = Swag.class)
})
@RequestMapping(value = "/api/swaggertest", method = RequestMethod.GET, produces = "application/json")
public ResponseEntity<Swag> getSwag() throws Exception {
return ResponseEntity.ok().body(new Swag());
}
}
当我运行我的应用程序时,api-docs会产生(我删除了一些部分以保持它更小):
{
swagger: "2.0",
host: "localhost:4014",
basePath: "/",
tags: [
{
name: "swagger-test-controller",
description: "Swagger Test Controller"
}
],
paths: {
/api/swaggertest: {
get: {
tags: [
"tests"
],
summary: "test",
description: "my notes",
operationId: "testNickname",
consumes: [
"application/json"
],
produces: [
"application/json"
],
responses: {
200: {
description: "Nice!",
schema: {
$ref: "#/definitions/Swag"
}
}
},
security: [
{
api_key: [ ]
}
]
}
}
},
securityDefinitions: {
api_key: {
type: "apiKey",
name: "api_key",
in: "header"
}
},
definitions: {
Swag: {
type: "object",
properties: {
foo: {
type: "string"
}
} } }
如果有人能帮我指出如何添加api密钥支持,我将不胜感激。
安全定义应如下所示,引用<代码>
"<any_name>" : {
"type" : "apiKey",
"name" : "x-api-key",
"in" : "header"
},
我们正在尝试从C#Windows服务调用AWS API网关来执行后台作业。哪个应该触发API网关定期初始化请求? 我们使用RestSharp调用APIendpoint,该类称为AwsAuthenticator,它继承自RestSharp.Authenticators.IAAuthenticator。但当我们调用API Gateway时,收到的错误是“我们计算的请求签名与您提供的签名不匹配。请检查您
我试图从azure key vault中为azure函数获取连接字符串。这些是我做的步骤, > 在azure函数中创建了一个托管标识(系统分配) 在azure密钥库中创建秘密 如有任何帮助,将不胜感激
请参阅我能够启用HTTP/2支持jetty服务器与JDK8的用户交互界面通过排除tomcat启动器和添加jetty启动到Spring Web配置,还添加了jetty-alpn-conscrypt-server, http2-server依赖。 但是在使用Netty server的Spring Cloud API网关端,我尝试了所有步骤,但都没有弄清楚,如何在Spring Cloud API网关中启
我使用Lambda和API Gateway来构建API。而且,我读到AWS CloudFront支持IPv6。我想使用自定义域和我创建的证书与ACM要求的API网关。 但是,当我使用http://ready.chair6.net测试是否为CloudFront URL找到AAAA记录时,没有找到AAAA记录。
我想扩展我的网站以支持OAuth,以便第三方应用程序可以访问数据并代表网站用户执行操作。我该怎么做? 基本上,我想知道如何生成访问令牌和应该完成的数据库设置。
原文链接:Serverless 应用开发指南:API Gateway + S3 + AWS Lambda 打造 CRUD 在前两篇文章《Serverless 应用开发指南: serverless 的 hello, world》和 《Serverless 开发指南:AWS IoT 服务开发》 里,我们简单地介绍了如何用 Serverless 和 AWS IoT 开发入门级的 Serverless 应