mevdschee / php-crud-api

Single file PHP script that adds a REST API to a SQL database

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Authentication to see documentation

Sparviero-Sughero opened this issue · comments

I think there is some problems when you need to share API documentation using auth.
I'm using

$config = new Config([
  'username' => 'aaa',
  'password' => 'bbb',
  'database' => 'ccc',
  'tables' => 'products',
  'openApiBase' => json_encode(array(
    "info" => array(
      "title" => "Title",
      "version" => "1.0.0",
    ),
    "components" => array(
      "securitySchemes" => array(
        "ApiKeyAuth" => array(
          "type" => "apiKey", 
          "in" => "header",
          "name" => "X-API-Key",
        )
      )
    )
  )),
  // auth 
  'apiKeyAuth.mode'=> 'required',
  'middlewares' => 'cors,apiKeyAuth',
  'apiKeyAuth.keys' => 'Vp7LxyEpfwYjSVm',
]);

In https://petstore.swagger.io/?url=https://<your domain>/api.php/openapi there is no way to pass the auth-key.
I think you should define in json the option to enable auth also in swagger (or similar).

there is no way to pass the auth-key.

I know

I think you should define in json the option to enable auth also in swagger (or similar).

I'm not sure I properly understand what it is you are proposing. Can you try to clarify this for me?

Probably, what change do you think would be needed in the openapi to support authenticating using the api key?

I'm looking forward to your suggestion for improvement.

Hi mevdschee (tnx for your amazing job).
With the code

    "components" => array(
      "securitySchemes" => array(
        "ApiKeyAuth" => array(
          "type" => "apiKey", 
          "in" => "header",
          "name" => "X-API-Key",
        )
      )

swagger show the Authorize button.
Then:

  1. click on Authorize button
  2. insert the apiKey
  3. click to "Try it out"
  4. click to "Execute"
    Swagger show "Loading" message and the API doesn't work.
    I don't know why :o(
    Maybe there is some options you need to add to json to enable auth on swagger?