Проверка подлинности Swagger basi c не выполняется с клиентом php - PullRequest
2 голосов
/ 27 января 2020

Когда я пытаюсь использовать сгенерированный клиент php из файла yaml, он не работает. Я получаю ошибку аутентификации, даже если я заполнил конфигурацию для аутентификации. Но когда я заменяю переменную options внутри сгенерированного API опциями basi c auth, это работает. См. Код ниже:

public function getLiveWegvakkenDataWithHttpInfo()
    {
        $returnType = '\Swagger\Client\Model\Wegvak[]';
        $request = $this->getLiveWegvakkenDataRequest();

    try {
        $options = $this->createHttpClientOption();
        try {
            $response = $this->client->send($request, $options);
        } catch (RequestException $e) {
            throw new ApiException(
                "[{$e->getCode()}] {$e->getMessage()}",
                $e->getCode(),
                $e->getResponse() ? $e->getResponse()->getHeaders() : null,
                $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null
            );
        }

Приведенный выше код не работает, но когда я заменяю $options следующим:

[
    'auth' => [
         'username',
         'password',
]]

Он работает. Может кто-нибудь объяснить, что я делаю не так? Поскольку мне кажется странным, что стандартная реализация не работает.

1 Ответ

0 голосов
/ 27 января 2020

В конце концов я обнаружил, что мой файл yaml не содержит этого: https://swagger.io/docs/specification/authentication/basic-authentication/

В приведенных выше документах сказано, что вам нужен этот код:

components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
security:
  - basicAuth: []

Когда вы добавите этот код, он будет реализован внутри кода API, чтобы фактически использовать базовую аутентификацию c, которую вы указали в конфигурации. В противном случае без него он просто будет делать запросы без добавления аутентификации внутри заголовка запроса.

Так что после добавления этого и заполнения конфигурации это сработало для меня.

...