Как мне получить Swagger UI, чтобы я мог предоставить заголовок аутентификации? - PullRequest
0 голосов
/ 28 апреля 2020

Я использовал Luminus вместе с reitit и swagger-ui для создания страницы, которая позволяет мне опробовать мой Luminus API. Я могу просто ввести свое тело запроса API и отправить его для проверки моего API. A snapshot of my swagger UI Теперь я добавил аутентификацию, используя приятеля, и мой API требует, чтобы токен был передан в заголовке запроса, или он отклоняет запрос как запрещенный.
Я пытаюсь получить поле заголовков «Авторизация», которое волшебным образом появляется в моем пользовательском интерфейсе, чтобы я мог ввести строку токена JWT и проверить мой API. Это должно быть очень распространенным требованием для любого, кто создает API с помощью reitit, но я не могу понять, как это сделать. Я обыскал все вокруг и обнаружил эту страницу повторного вызова , которая включает в себя текст ...

Параметры заголовка объявляются как строчные буквы {: заголовки {строка "авторизации" ?}}, который бы точно соответствовал тому, что нам предоставляет Ring. (Может все еще использовать HTTP-Header-Case их для документации.)

... и предлагает настройку ниже ...

:get {:summary "list offers"
      :parameters 
        {:headers 
          {"authorization" string?}}
         ... etc

Выполнение, которое не получило меня способ аутентификации. Итак, я нашел это обсуждение и отредактировал свои маршруты, добавив следующее после: summary и: параметры в вышеупомянутом маршруте ...

             :middleware [authenticated?]
             :swagger {:security [:apiKey]}

После добавления этого я получаю это. .. enter image description here

... похоже, я на правильном пути, но у меня все еще нет возможности ввести свой токен в заголовок аутентификации.

Как я уже сказал, все работает с curl ... Просто этот чванство не показывает никакого способа добавить заголовок аутентификации. Кто-нибудь знает, как заставить Swagger UI играть в этом сценарии?

Если reitit не поддерживает это, то как люди используют Swagger UI для аутентифицированных запросов?

Любая помощь будет признательна !

1 Ответ

0 голосов
/ 28 апреля 2020

OK. Решено.

На root моих маршрутов API (инкапсулируя все маршруты, где я мог бы использовать эту аутентификацию), я добавляю: securityDefinitions.

  ["/api"
   {:swagger {:id ::api
              :securityDefinitions {:apiAuth
                                             {:type "apiKey"
                                              :name "Authorization"
                                              :in "header"
                                              }}}

Внутри Speci c Маршрут:

             :middleware [authenticated?]
             :swagger {:security [{:apiAuth []}]}
...