Я использую swagger-ui и swagger-json, созданные с помощью swagger-php. Я не могу выполнить базовую аутентификацию для использования моей конечной точки. Я могу получить файл swagger json из моего приложения, но не использовать открытую конечную точку. Я не понимаю, что я неправильно понимаю. Если кто-то может показать мне полный пример с базовой аутентификации в Swagger 2.0?
CORS включен и полностью работает. Swagger-ui работает на localhost: 3000 с nodejs, а мое приложение запускает php с nginx на localhost: 80.
Я использую swagger-ui-dist 3.14.1, который совместим с swagger 2.0 (swagger-php 2.0)
3.14.1 | 2018-05-04 | 2.0, 3.0 | tag v3.14.1
Я использую эти комментарии SWG в моих контроллерах, чтобы использовать basicAuth (на стороне сервера)
/**
* @SWG\SecurityScheme(
* securityDefinition="basicAuth",
* name="authorization",
* type="basic",
* scheme="http"* )
*/
и это комментарии
/**
* @SWG\Get(
* description="Get all catalog",
* path="/ott/catalogs",
* produces={"application/json"},
* security = {"basicAuth"},
* @SWG\Response(response="200", description="Get all catalogs"),
* @SWG\Response(response="401",description="You are not authorized")
* )
* )
*/
Вот мой код на стороне клиента:
window.onload = function() {
// Build a system
const ui = SwaggerUIBundle({
url: "http://ott/ott/tools/swagger",
host: 'ott',
basePath: 'ott/',
schemes: 'http',
enableCORS: true,
dom_id: '#swagger-ui',
deepLinking: true,
validatorUrl:null,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout",
requestInterceptor: (req) => {
if (req.loadSpec) {
let hash = btoa("*******" + ":" + "********");
req.headers.Authorization = "Basic " + hash;
}
return req
},
onComplete : () => {
ui.preauthorizeBasic("basicAuth","*******","*******")
}
});
window.ui = ui
Когда я нажимаю на замок, у меня появляется первая ошибка в моей консоли, а затем, когда я пытаюсь получить свои каталоги, я получаю 401 — не авторизовано, потому что заголовок Basic Authentication не отправляется.
Аннотации выглядят неправильно. + Изменить @SWG\SecurityScheme
чтобы:
/**
* @SWG\SecurityScheme(
* securityDefinition="basicAuth",
* type="basic"* )
*/
(без name
а также scheme
атрибуты), и измените security
в @SWG\Get
следующее:
/**
* @SWG\Get(
* ...
* security = {{"basicAuth": {}}},
* ...
Других решений пока нет …