【发布时间】:2017-04-04 14:22:02
【问题描述】:
我需要使用 Kong 和 OAuth 来构建 Web 应用和其他一些 API。
现在我有:
- Kong 的服务器。
- 服务器存储用户信息,例如 id、用户名、密码。将其命名为 User-Database。
我需要:
- Web 应用程序和其他一些应用程序将使用带有 OAuth2.0 的 API;
- API 仅由 Kong 提供。
根据Kong上的文档,我设计了一个Resource Owner Password Credential,是这样的:
(这些API只是为了获取accessToken,没有认证方法)
- 用户端将用户名和密码发给Kong
- Kong 将其路由到用户数据库。
- User-Database 验证用户名和密码,并向 Kong 发送请求。该请求将包括用户名、密码、provision_key、autherticated_userid。 (*)
- Kong 将向用户数据库响应 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 两者吗?
或者有什么我错过的或者我可以优化的吗?
【问题讨论】:
-
我也面临同样的问题。你解决了吗?
-
kong 的 API 在 v1.0 中发生了变化,我还没有研究它,所以我现在不知道如何处理新版本。下面的答案可以解决老版本。
标签: api authentication oauth kong