2016-06-07 59 views
0

我正在为我的项目构建一个OpenAPI支持,但我需要swagger.yaml文件仅对授权用户可用。如何保护Swagger.yaml文件?

Swagger UI和Swagger Editor似乎都期望swagger.yaml文件可公开访问。

我想过各种方法来解决它。人们可以使用“签名”的URL,类似于S3的方式 - 这种方式只有拥有链接的人才能访问它。

什么是好习惯?

回答

0

我想通了。在Swagger-UI github page存在可以在index.html设置的authorizations参数的说明:

授权对象将被传递到招摇-JS。在这里设置它将触发包含任何授权或自定义签名逻辑,当获取swagger描述文件时。注意对象结构应该是{key:AuthorizationObject}

我所做的是设置了一个保护Swagger-UI的Node.js服务器。如果令牌未在Cookie中设置,它会指导用户完成OAuth 2.0流程,设置Cookie,然后仅指向swagger-ui。

扬鞭-UI反过来又authorizations参数设置如下:在下载swagger.yaml文件时

authorizations: { 
     "_auth": new SwaggerClient.ApiKeyAuthorization(
      "Authorization", "Bearer "+ Cookies.get("MyAccessToken"), 
      "header") 
    } 

头部然后被传递到服务器。