gpt4 book ai didi

django - 使用 Kong 进行身份验证

转载 作者:行者123 更新时间:2023-12-04 12:51:57 27 4
gpt4 key购买 nike

我在看 Kong替换我目前手工制作的 NodeJS API 网关。目前我有一个用户服务,它通过在登录时提供 JWT 来处理身份验证(用 Django 编写),然后客户端通过 header 传入。我当前的 API 网关然后拦截任何调用,对用户服务进行验证调用,并将 JWT header 替换为 X-User-IdX-User-Email .

据我所知,Kong 可以做大致相同的事情。我试图弄清楚这在完美世界中应该如何运作。我仍然有机会替换大部分基础设施,所以重写一些服务也不是完全没有问题。

因此,在我看来,会发生以下情况:

  • 用户在我的网站上注册。然后我在 Kong
  • 上用他们的用户名/id 创建一个新的消费者。
  • 用户登录。这就是我卡住的地方。我是否登录(或者在这种情况下,简单地将用户身份验证为所述用户),向 Kong 请求此消费者的 JWT,然后返回?如果我想在 JWT 的有效负载中添加更多数据怎么办?当 JWT 到期时,Kong 那边会发生什么?
  • 当用户请求服务时,Kong 会从头文件中嗅出 JWT,将其替换为 X-Consumer-* - 那是对的吗?

  • 如果我的想法是错误的,或者有更好的方法来实现这一点,请纠正我。我对整个微服务还很陌生。

    最佳答案

    我正在研究类似的设置,这些是我目前的发现/结论:

    用户注册必须是您描述的方式。

    登录后,我相信有两种可能的方法可以解决这个问题:

  • 将消费者 ID 存储在您的用户数据库中,
  • 将 jwt key 和 secret 存储在您的用户数据库中。

  • 在场景 1 中,您必须从 kong 获取 jwt key 和 secret 并生成一个 jwt token 并使用此 token 向您的 kong 服务发出请求。

    场景 2 与场景 1 几乎相同,只是您不必向 kong 发出任何请求即可生成 jwt token 。

    您可以向 jwt token 添加额外的负载参数,但这些参数不会传递到您的上游服务。然而,这个插件似乎解决了这个问题(我还没有测试过):

    https://github.com/wshirey/kong-plugin-jwt-claims-headers

    Kong 将来自 jwt 消费者的 custom_id 和用户名在授权后传递给上游服务,如下所示:
    x-consumer-custom-id: [245]
    x-consumer-username: ['my-test-user']
    x-consumer-id: ['1e9e25dd-396f-4195-94fc-f2a8bd8447a2']

    它还传递整个授权 header

    关于django - 使用 Kong 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43350853/

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