我正在寻找资源来配置 ApacheKNOXTOKEN
服务以访问 Apache NIFI REST API。
我已经KNOXSSO
配置好了,可以通过它访问 NIFI UI。但是,我找不到资源来通过 Curl 和 JWT 安全地访问 NIFI REST 服务。
指针表示赞赏。
我正在寻找资源来配置 ApacheKNOXTOKEN
服务以访问 Apache NIFI REST API。
我已经KNOXSSO
配置好了,可以通过它访问 NIFI UI。但是,我找不到资源来通过 Curl 和 JWT 安全地访问 NIFI REST 服务。
指针表示赞赏。
对此处的其他建议进行细微调整...
与 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 约定。
对于其他身份验证机制,如 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