Получение неявного потока AzureAD, работающего с Swagger UI - PullRequest
0 голосов
/ 13 марта 2019

В качестве упражнения я пытался создать конфигурацию swagger, которая могла бы вызывать API управления Azure, и запустить ее из онлайн-редактора swagger.

Я настроил его для использования неявной аутентификации, и он почти работает, но я просто не могу заставить Azure Framework распознавать редактор swagger как действительный URL-адрес перенаправления.


Вот все шаги, которые я предпринял. Кто-нибудь может заметить, что я делаю не так?


Используя портал Azure AD, я создаю новое приложение Azure AD

В ответные URL регистрации приложения я добавил https://editor.swagger.io/oauth2-redirect.html enter image description here

Я создал следующие записи безопасности в своем документе Swagger 2.0:

securityDefinitions:
  azureTokenAuthentication:
    flow: implicit
    authorizationUrl: https://login.microsoft.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/oauth2/authorize
    scopes:
      https://management.azure.com: Accessing the Azure API
    type: oauth2
security:
- azureTokenAuthentication:
  - https://management.azure.com

(отредактированный GUID - это мой идентификатор арендатора).

Теперь, когда я нажимаю кнопку «Авторизация», swagger открывает для меня диалог:

enter image description here

Итак, я ввожу идентификатор приложения и нажимаю авторизовать. Затем он отправляет меня на URL входа со следующими параметрами:

Обратите внимание, что redirect uri соответствует значению, которое я ввел при регистрации приложения.

Поэтому я ввожу свое имя пользователя и пароль, а затем URL-адрес перенаправляется на следующее:

https://login.live.com/err.srf?lc=1033#error=invalid_request&error_description=The+provided+value+for+the+input+parameter+'redirect_uri'+is+not+valid.+The+expected+value+is+a+URI+which+matches+a+redirect+URI+registered+for+this+client+application.&state=rQIIAdNiNtQztFJJTTKxMEpLMtK1MDKy1DUxNknVTTJNNNO1TEs2TjVIMzCzNLMoEuISWF1yo3vvud0Ozb9b9Z66bQ-cxcgZn5NZlqqXnJ-7ilEvo6SkoNhKXz81JbMkv0ivuDwxPT21SC8zXz8_sbQkw0i3CChTlJpcAlSZm7ODkfECI-MLRsZbTPz-jiB5EJFflFmVOos5JswoLNvT1TAjOdOxwrfSsdLXxdXU08XR1D_L1cg_y9HI0zXFL8y5uMLXxbHc0znDKSXCzyA51604Mdyt1NM1LCPZOCgnOdckPdQ4KCMpNygjOTcwPcw9pyQqONt2E7NKSqqpuZGhmZGuabJ5iq6JRVqSrmWSqaGuubmlabKpeaKZqWXyKWYZmI9yE_MS01NzU_NK9BKrSovAHr7BzHiBhfEVC48BsxUHB5cAgwSDAsMPFsZFrMCQmrTR22we8wzHyc1Bd633_2M4xapfku7mkeJk5qxfkpOb7lcUXB5SmOZb7Jef7l-c526UmVUQqV_q5Zzh4uzma2tkZTiBTeYDG2MHO8MuThID9haXiJGBoaWugbGuoZGCkbGVoZmVgXkUAA2

Интересный текст, который я почерпнул из этого:

Недопустимое значение для входного параметра 'redirect_uri'. Ожидаемое значение - это URI, который соответствует URI перенаправления, зарегистрированному для этого клиентского приложения.

Но это соответствует! Что я делаю не так?!?

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

reply url = "URL-адрес страницы вашего веб-интерфейса API", объединенный с "/oauth2-redirect.html"

пример: https://localhost:44329/swagger/oauth2-redirect.html

настройка для каждой среды в вашей регистрации приложенияв том числе ваш localhost.

0 голосов
/ 13 марта 2019

Прежде всего, я изменил URL авторизации с https://login.microsoft.com/<tenant-id>/oauth2/authorize на https://login.microsoft.com/<tenant-id>/oauth2/v2.0/authorize

Затем я должен был следовать этим инструкциям и напрямую изменить манифест приложения, чтобы разрешить неявный поток:

enter image description here

Затем я сменил прицелы. Я не мог запустить management.azure.com, но я мог получить https://graph.windows.net, добавив /.default в область действия. (https://graph.windows.net/.default).

Это сделало меня еще одним шагом вперед. Теперь он перенаправлен на URL авторизации, и Microsoft аутентифицировала меня, сгенерировала для меня токен и перенаправила мой браузер на https://editor.swagger.io/oauth2-redirect.html

Тогда я был расстроен, когда понял, что editor.swagger.io на самом деле не обрабатывает путь, на который перенаправляет браузер. (Файл outh2-redirect.html существует на GitHub здесь: https://github.com/swagger-api/swagger-ui/blob/master/dist/oauth2-redirect.html)

Вот когда я сдался.

...