1

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

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

指针表示赞赏。

4

2 回答 2

4

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

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

如果您在 Authorization 标头中包含 Knox JWT 令牌,则验证将失败。Authorization 标头中指定的 JWT 必须是 NiFi 生成/签名的令牌。为了验证由 Knox 生成/签名的令牌,NiFi 遵循 Knox 约定。

于 2019-01-30T17:55:56.363 回答
2

对于其他身份验证机制,如 SPNEGO 或登录身份提供程序,有一些端点,例如/access/token/access/kerberos您可以在其中获取令牌。

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

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

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

curl -k --header "Authorization: Bearer $token" https://<nifi-host>:<port>/nifi-api/flow/cluster/summary 
于 2019-01-30T17:17:03.800 回答