为api端点提供Swagger oauth访问令牌和刷新令牌实现

时间:2016-05-25 10:01:08

标签: swagger swagger-2.0

有些api端点需要授权头中的访问令牌。我正在寻找一种方法,其中一些端点需要在标头中访问令牌。这些端点有一个用于authroization并单击该按钮的按钮,它应该命中oauth端点并生成访问令牌和刷新令牌。该访问令牌应自动添加到此请求和继续请求的标头中。如果访问令牌已过期,则应通过已保存的刷新令牌生成访问令牌。我相信我必须使用两种安全定义

securityDefinitions:
      sample_auth:
       type: oauth2
       authorizationUrl: http://<auhtorizeationUrl>
       tokenUrl: http://<tokenUrl>
       flow: accessCode
       scopes:
        write: "modify sample  in your account"  

     sample_api_key:
      type: apiKey
      in: header
      name: Authorization

我的项目位于node.js.作为第一步,我尝试使用我的端点中的sample_api_key安全性在头文件中使用硬编码访问令牌。我在swagger-ui index.html

中使用了代码
function addApiKeyAuthorization(){
  console.log('key ');
    var key = encodeURIComponent( $('.input_apiKey_entry')[0].value );
    console.log('key '+key);
    if(key && key.trim() != "") {
        var apiKeyAuth = new SwaggerClient.ApiKeyAuthorization( "Authorization", "Bearer " + key, "header" );
        window.swaggerUi.api.clientAuthorizations.add( "sample_api_key", apiKeyAuth );
        log( "Set bearer token: " + key );
    }
  }

   $('.input_apiKey_entry').change(addApiKeyAuthorization);

并在我的swagger.yaml中添加了该特定端点     安全:        - sample_api_key:[]

在swagger ui中,它为我提供了点击授权按钮,为我提供了在文本字段中添加Authroization值的选项。在authroizing之后,触发请求发送错误     {   “message”:“未知安全处理程序:sample_api_key”,   “code”:“server_error”,   “statusCode”:403 }

node.js代码显示错误     错误:发送后无法设置标头。     在ServerResponse.OutgoingMessage.setHeader(_http_outgoing.js:346:11)     在applyHeaders(/Volumes/Data/samplegit/sample-api/node_modules/cors/lib/index.js:146:15)     at applyHeaders(/Volumes/Data/samplegit/sample-api/node_modules/node_modules/cors/lib/index.js:142:11)     在applyHeaders(/Volumes/Data/samplegit/sample-api/node_modules/node_modules/cors/lib/index.js:142:11)

0 个答案:

没有答案