【问题标题】:Apache NIFI REST API (jwt) access via Apache Knox gateway通过 Apache Knox 网关访问 Apache NIFI REST API (jwt)
【发布时间】:2019-01-31 01:55:56
【问题描述】:

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

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

感谢指点。

【问题讨论】:

    标签: jwt apache-nifi apache-knox


    【解决方案1】:

    此处对其他建议稍作调整...

    与 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 约定。

    【讨论】:

    • 确实!我确实证实了这一点。因此,我向“knoxtoken”端点发出了一个令牌请求,并将该令牌用作“hadoop-jwt”cookie 来与安全的 nifi-api 交互,这似乎有效。谢谢!
    • 在进一步提高了我的理解之后,我可以通过两个端点来实现它,一个用于 KNOXSSO -sso,另一个用于 KNOXTOKEN -jwt,具有两种不同的访问模式,但都重定向到同一个后端。 -jwt 端点需要一个带有承载令牌的授权标头,而 -sso 端点需要一个 cookie。我可以说第一个用于api访问,第二个用于浏览器。
    • 如何通过 curl 或 rest api 获取 knoxtoken ?
    【解决方案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 
    

    【讨论】:

    • 有什么方法可以通过 curl 或 rest api 获取 knoxtoken 吗?
    猜你喜欢
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多