如何在 openapi-codegen 生成的 python 代码中使用承载身份验证
How to use bearer authentication in openapi-codegen generated python code
我正在使用 OpenApi 3.0 规范来记录我的 API。它基本上是一个 REST API,其中 requi 为除登录请求之外的每个请求提供一个有效的 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 时,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() 函数 returns 是基本身份验证。我需要做什么才能在生成的代码中使用 Bearer 身份验证方案?
This was a bug。它已在 openapi-generator v. 4.0.0-beta2 及更高版本中修复。
我正在使用 OpenApi 3.0 规范来记录我的 API。它基本上是一个 REST API,其中 requi 为除登录请求之外的每个请求提供一个有效的 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 时,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() 函数 returns 是基本身份验证。我需要做什么才能在生成的代码中使用 Bearer 身份验证方案?
This was a bug。它已在 openapi-generator v. 4.0.0-beta2 及更高版本中修复。