我正在为我的项目构建一个OpenAPI支持,但我需要swagger.yaml文件才能供授权用户使用。
Swagger UI和Swagger Editor似乎都希望swagger.yaml文件可以公开访问。
我想过各种各样的解决方法。可以使用“已签名”的URL,类似于S3的做法 - 这样只有拥有链接的人才能访问它。
什么是好习惯?
答案 0 :(得分:0)
我明白了。在Swagger-UI github page上有一个authorizations
参数的说明,可以在index.html
中设置:
要传递给swagger-js的授权对象。在此处设置将在获取swagger描述文件时触发包含任何授权或自定义签名逻辑。请注意,对象结构应为{key:AuthorizationObject}
我所做的是设置一个保护Swagger-UI的Node.js服务器。如果未在Cookie中设置令牌,则会指示用户完成OAuth 2.0流程,设置Cookie,然后才会指向swagger-ui。
Swagger-ui反过来设置authorizations
参数如下:
authorizations: {
"_auth": new SwaggerClient.ApiKeyAuthorization(
"Authorization", "Bearer "+ Cookies.get("MyAccessToken"),
"header")
}
下载swagger.yaml文件时,标题会传递给服务器。