gpt4 book ai didi

api - 需要有关使用自管理用户数据库的 Kong 和 OAuth 的帮助

转载 作者:行者123 更新时间:2023-12-04 20:35:19 24 4
gpt4 key购买 nike

我需要使用 Kong 和 OAuth 来构建 Web 应用程序和其他一些 API。

我现在有:

  • Kong的服务器。
  • 服务器存储用户信息,例如 id、用户名、密码。将其命名为 User-Database。

  • 我需要:
  • Web 应用程序和其他一些应用程序将使用带有 OAuth2.0 的 API;
  • API 仅由 Kong 提供。


  • 根据Kong的文档,我设计了一个Resource Owner Password Credential one.,是这样的:

    (这些API只是为了获取accessToken,没有认证方式)
  • 用户端发布用户名密码到Kong
  • Kong将其路由到用户数据库。
  • User-Database 验证用户名和密码,并向 Kong 发送请求。请求将包括用户名、密码、provision_key、autherticated_userid。 (*)
  • Kong 会向 User-Database 响应一个 access_token,并且还会记住 autherticated_userid、access_token 和 scope。 Kong 会在访问 token 过期之前记住它们。
  • User-Database 收到 Kong 的响应后,也会响应 step 1 & 2,最后 User-End 会得到 access-token 以备将来使用。

  • (获得访问 token )
  • 用户端将向需要身份验证的 API 发送请求。

  • enter image description here

    那里 我在第 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 resource-owner-password-credentials

    最佳答案

    Kong 的文档在资源所有者密码授予方面颇具误导性。

    这个流程还需要你实现一个Authorization Server,它的任务是:

  • 要验证用户,在这种情况下使用提供的用户名和密码
  • 授权用户,即决定是否应该颁发访问 token ,并决定范围

  • 请注意,这两件事完全取决于您。

    你的授权服务器到底实现了自己的 /authorize端点应该像这样工作:

    您的客户端应用发布:
    client_id=<your client id>&
    client_secret=<your client secret>&
    username=<...>&
    password=<...>&
    grant_type=password&
    (optional: scope=space delimited scopes)

    您的授权服务器保留了 provision_key或通过 Kong Admin API 检索它(取决于您的架构的外观以及您是否可以从您的身份验证服务器使用 Admin API)。

    然后你就可以组装实际的调用到Kong的 /oauth2/token端点使用来自授权服务器的数据(即经过身份验证的用户 ID 和经过身份验证的范围), provision_key以及来自您的客户端应用程序的客户端凭据:
    POST https://kong:8443/yourapi/oauth2/token

    grant_type=password&
    client_id=(...)&
    client_secret=(...)&
    authenticated_userid=(...)&
    authenticated_scope=(...)&
    provision_key=(...)

    另请注意,如果您存储客户端 ID ,Web 应用程序的 secret 性至关重要。和 里面的 secret ,即仅使用客户端 secret 服务器端。对于不受信任的应用程序(移动、SPA),可以让授权服务器检索用于 Kong 的客户端 secret ,通过客户端 ID 到 secret 查找(也使用 Kong Admin API)。

    关于api - 需要有关使用自管理用户数据库的 Kong 和 OAuth 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40715944/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com