php-crud-api icon indicating copy to clipboard operation
php-crud-api copied to clipboard

Authentication to see documentation

Open Sparviero-Sughero opened this issue 1 year ago • 2 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).

Sparviero-Sughero avatar May 17 '24 07:05 Sparviero-Sughero

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.

mevdschee avatar May 17 '24 21:05 mevdschee

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?

Sparviero-Sughero avatar May 21 '24 14:05 Sparviero-Sughero