Как использовать аутентификацию на предъявителя в коде Python, сгенерированном openapi-codegen - PullRequest
0 голосов
/ 17 января 2019

Я использую спецификацию 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 используйте следующую команду:

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 () возвращает базовую аутентификацию. Что мне нужно сделать, чтобы вместо этого использовать схему аутентификации Bearer в сгенерированном коде?

1 Ответ

0 голосов
/ 17 января 2019

Это ошибка в openapi-генераторе:
https://github.com/OpenAPITools/openapi-generator/issues/1577

Вы можете подписаться на эту ветку, чтобы получать уведомления об исправлении ошибки.

ОБНОВЛЕНИЕ: расширение (https://github.com/OpenAPITools/openapi-generator/pull/1999) было объединено с мастером

...