我正在寻找资源来配置Apache KNOXTOKEN
服务以访问Apache NIFI REST API。
我已经配置了KNOXSSO
,并且能够通过它访问NIFI UI。但是,我找不到资源来确保可以通过Curl和JWT安全访问NIFI REST服务。
赞赏指针。
答案 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