Apache NIFI REST API (jwt) 通过 Apache Knox 网关访问

Apache NIFI REST API (jwt) access via Apache Knox gateway

我正在寻找资源来配置 Apache KNOXTOKEN 服务以访问 Apache NIFI REST API。

我已经KNOXSSO配置好了,可以通过它访问NIFIUI。但是,我找不到资源来通过 Curl 和 JWT 安全地访问 NIFI REST 服务。

感谢指点。

对于其他身份验证机制,如 SPNEGO 或登录身份提供程序,有 end-points,如 /access/token/access/kerberos,您可以获得令牌。

我认为 Knox 没有办法做到这一点,因为它需要在浏览器中重定向登录页面的 SSO 工作流程。

您必须先通过 Knox SSO 向 NiFi UI 进行身份验证,然后使用 Chrome 开发工具之类的工具查看浏览器的本地存储并找到 NiFi UI 对当前用户有。

然后您可以使用该令牌通过在 Bearer header 中传递来进行 API 调用,例如:

curl -k --header "Authorization: Bearer $token" https://<nifi-host>:<port>/nifi-api/flow/cluster/summary 

对此处的其他建议进行微调...

与 KnoxSSO 集成时,NiFi 接受 cookie 中的 Knox JWT 令牌。默认情况下,我相信这个 cookie 被命名为 hadoop-jwt。如果您尝试使用 curl 访问 NiFi Rest Api,我相信您需要从 Knox 获取 JWT 值(或者可能通过查看浏览器 DevTools 中的 cookie)并将其包含在 cookie 中在你的 curl 请求中。

如果您在授权中包含 Knox JWT 令牌 header,验证将失败。授权 header 中指定的 JWT 必须是 NiFi generated/signed 的令牌。为了通过 Knox 验证令牌 generated/signed,NiFi 遵循 Knox 约定。