Аутентификация с использованием OAuth2 через swagger - PullRequest
0 голосов
/ 08 января 2020

У меня есть REST API, созданный с помощью C#, Swashbuckle и Swagger. Аутентификация должна использовать токены OAuth2. Я успешно настроил Swagger для использования протокола OAuth2:

  • запросить у сервера авторизации код
  • redirect_url для oauth2-redirect. html (предоставляется по умолчанию)
  • обратный вызов из oauth2-redirect. html на главную страницу с кодом
  • запросить у сервера авторизации получить токены

Тем не менее сервер авторизации вернет ошибку. После расследования ошибка исходит из данных, содержащихся в запросе на получение токенов. Grant_type, code и redirect_url заполнены правильными данными, а заголовок Authorization зашифрован в Basi c.

Разница между запросом от Swagger и тем, который я сделал для тестирования, заключается в наличии параметра "client_id", автоматически предоставленного Swagger в запросе. Вы можете найти оба запроса ниже:

Следующий запрос работает:

curl --location --request POST 'https://AUTHORIZATIONSERVER/oauth2/IDP/access_token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Authorization: Basic ***************' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'code=***************' \
--data-urlencode 'redirect_uri=https://MYSERVER/swagger/ui/oauth2-redirect.html'

Следующий запрос (отправленный Swagger) не работает:

curl --location --request POST 'https://AUTHORIZATIONSERVER/oauth2/IDP/access_token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Authorization: Basic ***************' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'code=***************' \
--data-urlencode 'redirect_uri=https://MYSERVER/swagger/ui/oauth2-redirect.html' \
--data-urlencode 'client_id=PSSSurveilNG'

Мой ответ следующий: Как я могу изменить в Swagger конфигурацию запроса OAuth и удалить добавление параметра client_id?

...