Мне нужно использовать Kong и OAuth для создания веб-приложения и некоторых других API.
Теперь у меня есть:
- Сервер для Конга.
- Сервер хранит информацию о пользователе, такую как идентификатор, имя пользователя, пароль. Назвал его User-Database.
Мне необходимо:
- Веб-приложение и некоторые другие собираются использовать API с OAuth2.0;
- API предоставляет только Kong.
Согласно документу на Kong, я разработал учетную запись пароля владельца ресурса., И это примерно так:
(Эти API предназначены только для получения accessToken, без метода аутентификации)
- User-End post Имя пользователя и пароль для Kong
- Kong направляет его в базу данных пользователей.
- База данных пользователей проверяет имя пользователя и пароль и отправляет запрос в Kong. Запрос будет включать имя пользователя, пароль, provision_key, autherticated_userid. (*)
- Kong ответит access_token на User-Database, а также запомнит autherticated_userid, access_token и область видимости. Конг запомнит их до истечения срока действия токена доступа.
- После того, как User-Database получила ответ от Kong, он также ответит на шаги 1 и 2, и, наконец, User-End получит токен доступа для будущего использования.
(Получил токен доступа)
- User-End отправит запрос API, которым требуется аутентификация.
Есть кое-что, чего я не понял на шаге 3.
Согласно документу о Конге:
$ curl https://your.api.com/oauth2/token \
--header "Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW" \
--data "client_id=XXX" \
--data "client_secret=XXX" \
--data "scope=XXX" \
--data "provision_key=XXX" \
--data "authenticated_userid=XXX" \
--data "username=XXX" \
--data "password=XXX"
The provision_key is the key the plugin has generated when it has been added to the API, while authenticated_userid is the ID of the end user whose username and password belong to.
Должен ли я хранить всю информацию о пользователях в моей самоуправляемой базе данных пользователей и в Kong обоих?
Или я что-то пропустил или могу оптимизировать?