我需要使用 Kong 和 OAuth 来构建 Web 应用程序和其他一些 API。
我现在有:
- Kong的服务器。
- 服务器存储用户信息,例如 id、用户名、密码。将其命名为用户数据库。
我需要:
- Web 应用程序和其他一些应用程序将使用带有 OAuth2.0 的 API;
- API 仅由 Kong 提供。
根据 Kong 上的文档,我设计了一个资源所有者密码凭证,它是这样的:
(这些API只是为了获取accessToken,没有认证方法)
- 用户端发布用户名和密码到Kong
- Kong 将其路由到用户数据库。
- User-Database 验证用户名和密码,并向 Kong 发出请求。该请求将包括用户名、密码、provision_key、autherticated_userid。(*)
- Kong 将向 User-Database 响应 access_token,并且还会记住 autherticated_userid、access_token 和范围。Kong 会在访问令牌过期之前记住它们。
- User-Database 收到 Kong 的响应后,也会响应 step 1 和 2,最后 User-End 会得到 access-token 以备后用。
(获得访问令牌)
- 用户端将向需要身份验证的 API 发送请求。
在第 3 步有一些我无法理解的东西。
根据关于Kong的文件:
$ 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中吗?
或者有什么我错过的或者我可以优化的吗?