Я изучаю новый проект, который мы планируем сделать сначала, чтобы мы могли затем реализовать приложения для веб-и родных приложений, а также разрешить третье партийной интеграции. До сих пор все стандартно.Автоматическое тестирование API защищенного API OAuth2/OpenID Connect
Мы также хотим иметь полный набор автоматических тестов для API, чтобы гарантировать, что он работает без регрессий, и обеспечить его соответствие требованиям. Опять же, довольно стандартный, но поскольку мы тестируем API, мы будем использовать HTTP-клиент в коде, а не веб-браузер.
Мы рассматривали oauth2/OpenID Connect для облегчения аутентификации и авторизации для API - в основном, клиенты могут аутентифицироваться, получать токен доступа, а затем использовать его для доступа ко всем ресурсам API.
То, что я пытаюсь выработать, - это хороший способ получить автоматические тесты для работы с частью oauth2, чтобы иметь возможность фактически вызвать API. Первая мысль заключалась в том, чтобы использовать типы «client_credentials» или «password», которые кажутся похожими на то, что они будут работать для того, что мы хотим, но они вообще не охватываются спецификацией OpenID Connect и, конечно, «пароль» «по крайней мере, это вообще не считается хорошей идеей.
Это лучший способ достичь этого или есть другие лучшие практики для такого рода ситуаций, которые могут использоваться с другими потоками, но без веб-браузера?
Редактировать: после (много) больше чтения, у меня есть новый план. Выполнение тестов полностью в автономном режиме, с помощью отдельного развертывания против отдельной базы данных и посев данных непосредственно в базу данных до того, как тесты запуск, а затем, используя стандарт OpenID Connect потоков, но с:
- клиентом, который отмечен в базы данных для целей тестирования. Это важный бит, и это возможно только в том случае, если клиент может быть зарегистрирован непосредственно в базе данных без прохождения бизнес-логики.
- подсказка = нет
- login_hint = имя пользователя, чтобы получить маркер доступа для
- сферы, содержащей «тестирование»
Система может затем обнаружить эту комбинацию фактов, и авторендеринг подлинность предоставленного имени пользователя без необходимости просмотра браузера.
Это кажется разумным? Или есть лучший способ?
Вы пробовали инструмент OpenID Connect для сертификации (https://openid.net/certification/testing/), предоставленный OpenID Foundation? –
Я понимаю, что это для тестирования самих служб OpenID Connect, в то время как меня больше интересует тестирование других сервисов API, которые должны быть созданы и защищены за токенами доступа OAuth2/OpenID Connect, что означает, что для вызова им нужен какой-то способ получения действительных токенов доступа программно. – Graham
Я не понимаю, как безопасно создавать специальный пользователь тестирования? Что, если кто-то получит доступ к вашей тестовой среде или выяснит, как создать тестового пользователя на производстве? Это не похоже на правильное решение для меня. –