apache-kafka - 如何将 Kafka 与 OpenID-Connect 结合使用?
问题描述
我从卡夫卡开始。
我看到我能够在生成消息时传递标头。
传统上,人们会有一个 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 和/或其工具如何处理这种情况?
解决方案
Kafka 通常使用 SASL 和其他 Authorization 插件来阻止访问。
证书将在客户端(此处为 REST 代理)之间分发。与任何其他 Web 服务器一样,您将需要其他代理或插件来防止进一步访问或审核请求。
HTTPS 证书将用于保护到 REST 代理的流量,但您似乎在询问更具体的内容。
推荐阅读
- draw - libreoffice Basic:绘图和表格形状:如何格式化单元格?
- javascript - 将 websocket ref 传递给子组件
- c++ - Google Kickstart 2020 Round A 2020 错误答案
- ios - UIvew 在不同位置使用相同的代码
- flutter - 访问 Cloud Firestore 会引发 NoSuchMethodError
- excel - VBA - 使用范围函数从一个工作表复制并粘贴到另一个工作表
- python - 是否可以从其他人的不和谐服务器中获取消息?
- laravel - Laravel eloquent 得到一个二维数组的数组
- server-side-rendering - 使用 Svelte 进行动态服务器端渲染。如何在客户身上补水?
- android - Xamarin Forms 允许在播放视频时从 Android 上的另一个应用程序播放音乐