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

时间:2019-01-30 17:06:19

标签: jwt apache-nifi apache-knox

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

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

赞赏指针。

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

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

我认为对于Knox而言,没有一种方法可以实现,因为它需要在浏览器中重定向登录页面的SSO工作流程。

您必须首先通过Knox SSO向NiFi UI进行身份验证,然后使用类似Chrome Dev工具的工具在浏览器的本地存储中查找并找到NiFi UI为当前用户所拥有的令牌。

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

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