两个问题:
当您定义新路由并希望通过在标头中设置api_key来保护它时,是否通过在yaml文件中指定该路由下的security
部分来实现,或者你把它放在parameters
(或两者)之下?如果将其置于parameters
之下,那么将其置于security
之下是什么意思?
yaml文件可以告诉您某些路由受api_key保护,但它没有指定该密钥的值(据我所知)。这是否意味着我需要编写一些拦截我的路由并检查密钥有效性的自定义中间件,或者它可以由一个招摇工具自动生成?
感谢。
答案 0 :(得分:1)
我目前正和你一样旅行。我知道这个:
在我的swagger.json中添加什么来接受api密钥 https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#securityRequirementObject
"安全":[ { " api_key":[] } ]
在我的控制器中添加什么... https://github.com/apigee-127/swagger-tools/blob/master/docs/Middleware.md
几乎使用swagger-tools来使用middleware.swaggerSecurity。
我发现它只是简单地选择了'范围'保存实际密钥并将其与您存储在某处的有效密钥列表进行比较的参数。
我没有得到的是如何允许流程转到下一个功能(如快递中的' next()')或者如果提供的API密钥无效则停止。有一个'回调'参数,但我不知道如何使用它(还)。
我希望这有效。
答案 1 :(得分:0)
您需要自己实施安全检查。 Swagger将帮助您定义它们,但实施是您的工作。