10

我目前正在使用 Kong API 网关,我想用它来验证网关上用户的身份验证,并在用户未正确登录时限制对服务的访问。我有一个身份验证服务,它在用户登录时发出 JWT。

我现在想与 Kong 共享 JWT 机密,并将其用于验证已发布的 JWT,以保护需要适当身份验证的服务。

我看了一下这个插件:https ://getkong.org/plugins/jwt/

但似乎这个插件的工作方式与我想要实现的有点不同。为什么我必须创建消费者?我希望我的身份验证服务中只有一个用户数据库,以避免需要同步。似乎这个插件的方法是为让第 3 方利益相关者访问我的 API 而设计的。

任何提示将不胜感激。

4

3 回答 3

20

Riley 给出的答案在实施中是正确的,但这不是香港消费者的预期用途。

kong 中的消费者是使用 API 的应用程序。因此,除非您有多个供应商使用您的应用程序/网络服务,否则我建议您创建一个消费者。

您可以为该使用者创建多个密钥和秘密对(JWT 凭据)。使用用户密钥和密钥为用户创建 JWT。将此密钥和机密与您的用户 ID 和其他详细信息一起存储在您当前的数据库中。使用这些创建您的 JWT 并将 JWT 返回给用户。

在创建 JWT 时,您可以将任何其他要作为声明附加的内容添加到 JWT。您可以在 Kong 中为这些索赔创建支票。因此,当您调用任何 API 以及这些 JWT 时,Kong 将检查 JWT(以及所有声明)的有效性,然后才允许访问 API。

于 2017-10-18T06:57:33.400 回答
8

在我看来,Kong 的 JWT 插件的设计并不想与您分享 JWT 秘密——它想完全拥有 JWT。您确实必须为每个用户创建一个消费者,并让 Kong 管理它。

我问了几个问题以确认 Google Group - 请参阅https://groups.google.com/forum/?fromgroups#!topic/konglayer/XHnVEGoxZqo

两个亮点:

您能否确认可以为每个用户创建一个消费者和一个凭证?

不仅没关系,而且这是推荐的方式:)

Kong 会乐于拥有 200 万用户使用单个 api 吗?2亿呢?

从技术上讲,这应该不是问题,我建议设置一个 POC,您可以在其中试验更多的用户,以优化 Kong 和数据存储之间的连接并确保我们正确调整所有内容。

于 2016-03-26T19:01:54.650 回答
0

您实际上可以在创建 JWT 插件时将其传递给它:

$ curl -X POST http://kong:8001/consumers/${consumer_id}/jwt \ -H "Content-Type: application/x-www-form-urlencoded" \ --data "secret=mysecret&consumer_id=${consumer_id}"

于 2018-05-18T12:35:52.197 回答