Я изучаю новый проект, который мы планируем сначала выполнить API, чтобы затем мы могли реализовывать веб-приложения и собственные приложения, а также допускать стороннюю интеграцию. До сих пор все стандартно.
Мы также хотим иметь полный набор автоматических тестов для API, чтобы гарантировать, что он работает без регрессий, и обеспечить его соответствие требованиям. Опять же, довольно стандартный, но поскольку мы тестируем API, мы будем использовать HTTP-клиент в коде, а не веб-браузер.
Мы смотрели на oauth2/OpenID Connect для упрощения аутентификации и авторизации для API - в основном, чтобы клиенты могли аутентифицироваться, получить токен доступа, а затем использовать его для доступа ко всем ресурсам API.
То, что я пытаюсь выработать, - это хороший способ заставить автоматические тесты работать с частью oauth2, чтобы иметь возможность фактически называть API. Первая мысль заключалась в том, чтобы использовать типы "client_credentials" или "password", которые кажутся похожими на то, что они будут работать для того, что мы хотим, но они вообще не охватываются спецификацией OpenID Connect и, конечно, "пароль" "по крайней мере, это вообще не считается хорошей идеей.
Является ли это лучшим способом для достижения этой цели или существуют другие лучшие практики для такого рода ситуаций, которые могут использоваться с другими потоками, но без веб-браузера?
Изменить: после (много) больше чтения у меня новый план. Выполнение тестов полностью отключено, используя отдельное развертывание против отдельной базы данных и данные о посеве непосредственно в базе данных до запуска тестов, а затем используя стандартные потоки OpenID Connect, но с помощью:
- Клиент, который помечен в базе данных для целей тестирования. Это важный бит, и это возможно только в том случае, если клиент может быть зарегистрирован непосредственно в базе данных без прохождения бизнес-логики.
- строка = нет
- login_hint = имя пользователя, чтобы получить токен доступа для
- область, содержащая "тестирование"
Затем система может обнаружить эту комбинацию фактов и автоматически аутентифицировать предоставленное имя пользователя без необходимости проходить через браузер.
Это кажется разумным? Или есть лучший способ?