NiFi:配置SSLContext,信任库或密钥库认证

时间:2018-10-23 16:07:54

标签: ssl apache-nifi http-status-code-401

我正在尝试从DC Metro's API tool获取数据。我正在使用“训练位置”链接。

我需要配置SSLContextService,但是我只有网站提供的主键和辅助键。例如,密钥的格式如下:

5bcf1f7d091f4f618f1eefbefe23a56e
f15633bd2dd44a1f944c96361c0ab26f

如何在NiFi的SSLContext部分进行配置?我正在使用GetHTTP。这是我目前拥有的图片,首先是GetHTTP配置,然后是SSL配置:

enter image description here

下一个配置:

enter image description here

我不知道如何将上面的那些键用作TruststoreKeystore,或者这是否就是我应该要做的。我的密钥库文件名指向cacerts,但是我知道这些密钥不在其中。我尝试将它们转换为.pem,这是一个错误,尤其是当我将它们放入keystore.jks时。

我收到此错误:

enter image description here

我如何获得访问权限?

有用的link on API link

1 个答案:

答案 0 :(得分:3)

请注意,您提供的API密钥(例如7960778b79e547969a9c201ceeda50d8)就像密码一样被视为敏感信息。

这些密钥用于访问 API ,与用于SSL协商的NiFi密钥库/信任库无关。在这种情况下,使用Java cacerts是正确的,但是您无需将API密钥添加到信任库中。

此页面描述了请求所需采取的形式:https://developer.wmata.com/docs/services/5763fa6ff91823096cac1057/operations/5763fb35f91823096cac1058#TrainPosition

我建议您阅读如何使用Web API和发出Web请求,然后了解如何使用API​​密钥。他们在底部举了一个例子:

curl -v -X GET "https://api.wmata.com/TrainPositions/TrainPositions?contentType={contentType}"
-H "api_key: {subscription key}"

--data-ascii "{body}" 

{subscription key}是您的API密钥,{contentType}是HTTP响应内容类型。如果您不熟悉这些术语,则可能需要研究它们。我建议首先使上述curl命令起作用,然后再将其传递给NiFi。

curl -v -X GET“ api.wmata.com/TrainPositions/TrainPositions?contentType=json” -H“ api_key:e13626d03d8e4c03ac07f95541b3091b”为我工作。 (这是wmata网站的测试API密钥)。

在InvokeHTTP中,您将添加一个名为“ api_key”的处理器属性(点击右上角的加号),并将其值设置为用户键(我不知道这是否是主键),然后将“ “要发送的属性”属性值为“ api_key”。就像我们在上面用-H“ api_key:e136 ...”在curl中所做的一样,这将把api_key属性(密钥)作为标头api_key发送。