如何在openapi-codegen生成的python代码中使用承载身份验证

时间:2019-01-16 21:16:52

标签: python swagger openapi servicestack-openapi

我正在使用OpenApi 3.0规范来记录我的API。基本上,这是一个REST API,除了登录请求外,每个请求都需要有效的Bearer令牌。 OpenAPI规范如下所示:

---
openapi: 3.0.0
info:
  title: MyTitle
  contact:
    email: mymail@mail.com
  version: 0.0.1
servers:
- url: http://localhost/api/v1
components:
  schemas:
    ...
  securitySchemes:
    bearerAuth:
      type: http
      bearerFormat: JWT
      scheme: bearer
security:
- bearerAuth: []

在自动生成的工作正常的swagger-ui中,当邮递员下载OpenAPI规范并将其导入Postman时,情况也是如此。

但是,在使用openapi-generator时,请使用以下命令:

docker run --user `id -u`:`id -g` --rm -v ${PWD}:/local openapitools/openapi-generator-cli generate -i /local/api.json -g python -o /local/api

但是,它尝试使用用户名和密码代替承载令牌:

def get_basic_auth_token(self):
    """Gets HTTP basic authentication header (string).

    :return: The token for basic HTTP authentication.
    """
    return urllib3.util.make_headers(
        basic_auth=self.username + ':' + self.password
    ).get('authorization')

def auth_settings(self):
    """Gets Auth Settings dict for api client.

    :return: The Auth Settings information dict.
    """
    return {
        'bearerAuth':
            {
                'type': 'basic',
                'in': 'header',
                'key': 'Authorization',
                'value': self.get_basic_auth_token()
            },

    }

请注意,此处使用了用户名和密码,并且auth_settings()函数返回基本auth。要在生成的代码中使用承载身份验证方案,我该怎么办?

1 个答案:

答案 0 :(得分:1)

这是openapi-generator中的错误:
example graph

您可以订阅该线程以在错误修复后得到通知。

更新:增强功能(https://github.com/OpenAPITools/openapi-generator/issues/1577)已合并到主版本中