【问题标题】:How does one use Kafka with OpenID-Connect?如何将 Kafka 与 OpenID-Connect 结合使用?
【发布时间】:2020-03-10 20:40:55
【问题描述】:

我从 Kafka 开始。

我发现我可以在生成消息时传递标头。

传统上,用户将拥有一个 Web 客户端(单页应用程序),用户可以在其中通过某个远程 oidc idp 登录并接收令牌。然后该令牌通过Authentication: Bearer token-here 标头发送到某个 RESTful 后端,在该后端检查令牌的有效性并处理有效负载,保存到数据库或其他,然后返回或不返回某些内容。

现在有 Apache Kafka。它有一个 REST 代理。我可以将标头传递给 REST 代理并生成消息或使用它们,但我对“保护我的 RESTful JSON API”部分感兴趣。

目前,在没有 Kafka 的情况下,我有一个 oidc 代理(使用 keycloak,即 keycloak-gatekeeper)来过滤将哪个请求发送到后端,或者我有一个 oidc 客户端将令牌验证作为一些中间件功能后端内部。在任何情况下,我认为无效请求都不会像在 Kafka 中那样被“记录”。

oidc 令牌验证和请求过滤在 Kafka/Confluent 生态系统中的什么位置?

假设我们有一个与 Confluent REST 代理通信的 SPA。一些已登录的用户想要发布消息,而一些未登录的用户则不能。

Kafka 和/或其工具如何处理这种情况?

【问题讨论】:

标签: apache-kafka openid-connect kafka-rest


【解决方案1】:

Kafka 通常使用 SASL 和其他 Authorization 插件来阻止访问。

证书将在客户端(此处为 REST 代理)之间分发。与任何其他 Web 服务器一样,您将需要围绕 的其他代理或插件来防止进一步访问或审核请求。

HTTPS 证书将用于保护到 REST 代理的流量,但您似乎在询问更具体的内容。

There is no reference to OpenID in the documentation, only LDAP RBAC, as a commercial offering

【讨论】:

  • 我担心的是 kafka REST 为客户端提供了 REST 接口进行通信。 SPA 通过 kafka REST 与 Kafka 对话。我不关心 kafka REST 和 Kafka 通信。我对使用 oidc 进行身份验证、获取令牌并使用该令牌向 Kafka REST 证明我的身份感兴趣,因此它可以决定授予我对生产者或消费者的写入或读取权限。我的意思是,当这不可能时,我看不到 Kafka REST 的意义,我还不如编写自己的 Kafka 中间件。我之所以问,是因为我在日志中看到了 oauth2 配置选项,但在文档中没有看到。
  • 啊,我明白了,最后一部分,Kafka REST 使用基本身份验证。好的,我会接受你的回答。谢谢。
  • 啊,突然间就出现了:docs.confluent.io/current/security/rbac/token-auth.htmloidc 可以说是一种 oauth2 方言。
  • 这可能是企业独有的功能,我不确定
猜你喜欢
  • 1970-01-01
  • 2015-05-29
  • 2021-12-25
  • 1970-01-01
  • 2015-06-13
  • 2018-04-05
  • 2019-09-02
  • 2019-05-29
  • 2015-08-01
相关资源
最近更新 更多