如何在OpenAPI-Codegen生成的Python代码中使用Bearer身份验证

7

我正在使用 OpenApi 3.0 规范来记录我的 API。这基本上是一个 REST API,每个请求都需要一个有效的 Bearer token(除了登录请求)。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时,同样也适用于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

然而,它并没有使用Bearer令牌,而是试图使用用户名和密码:
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()函数返回基本身份验证。我该如何在生成的代码中使用Bearer身份验证方案?


1
这是一个 bug:https://github.com/OpenAPITools/openapi-generator/issues/1577 - Helen
Helen,谢谢你为我搜索了一下...我确实在GitHub上看过这些问题,但没有找到...我的错。你能把这个作为答案发出来吗?我会接受的。 - Daniel
1个回答

8

这是一个bug。它已经在openapi-generator v.4.0.0-beta2及更高版本中修复。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接