获取来源设备的凭据并将其添加到消息data或metadata。
配置
节点仅有单一配置选项,用于确定获取的凭据应放置的位置。
- Fetch credentials to — 确定新凭据字段的目标位置。
- Message:将获取的凭据添加到消息data。消息data必须为JSON对象。
- Metadata:将获取的凭据添加到消息metadata。
JSON Schema
消息处理逻辑
- 节点首先检查消息来源实体是否为
DEVICE。若来源实体为其他类型(如ASSET、CUSTOMER),消息经Failure连接传递。 - 随后异步从数据库获取来源设备的凭据。若未找到凭据,消息也经
Failure连接传递。 - 若找到凭据,节点准备添加两个新字段:
credentialsType:凭据类型(如ACCESS_TOKEN、X509_CERTIFICATE、MQTT_BASIC)。credentials:凭据值。该字段格式取决于目标:- 添加到 Message 时,对于复杂凭据(如MQTT Basic)
credentials为JSON对象,其他(如Access Token)为简单字符串。 - 添加到 Metadata 时,
credentials值始终为字符串。对于复杂凭据,为字符串化的JSON对象。
- 添加到 Message 时,对于复杂凭据(如MQTT Basic)
- 根据Fetch credentials to设置,节点将
credentialsType和credentials键值对添加到消息data或metadata。 - 丰富后的消息经
Success连接转发。若发生错误(如来源实体不是设备,或尝试向非JSON消息体添加),原始消息经Failure连接路由。
输出连接
Success:- 设备凭据已成功获取并添加到消息。
Failure:- 消息来源实体不是
DEVICE。 - 无法找到来源设备的凭据。
- Fetch credentials to 设为 Message,但消息data不是有效JSON对象。
- 消息来源实体不是
示例
示例1 — 将设备访问令牌添加到metadata
入站消息
Metadata:
1
2
3
4
{
"deviceName": "SmartMeter-001",
"deviceType": "SmartMeter"
}
Originator: 来源实体为具有 Access Token 凭据(sm001_token_123)的设备。
节点配置
1
2
3
{
"fetchTo": "METADATA"
}
出站消息
消息经 Success 连接发送,metadata已更新。
Metadata:
1
2
3
4
5
6
{
"deviceName": "SmartMeter-001",
"deviceType": "SmartMeter",
"credentialsType": "ACCESS_TOKEN",
"credentials": "sm001_token_123"
}
说明:节点获取来源实体的凭据,将 credentialsType 和 credentials 添加到消息metadata。credentials 为包含设备访问令牌的字符串。
示例2 — 将MQTT凭据添加到metadata
入站消息
Data:
1
2
3
4
{
"deviceName": "SmartMeter-001",
"deviceType": "SmartMeter"
}
Originator: 来源实体为具有 MQTT Basic 凭据("{"clientId":"clientId123","userName":"username","password":"password"}")的设备。
节点配置
1
2
3
{
"fetchTo": "METADATA"
}
出站消息
消息经 Success 连接发送,metadata已更新。
Metadata:
1
2
3
4
5
6
{
"deviceName": "SmartMeter-001",
"deviceType": "SmartMeter",
"credentialsType": "MQTT_BASIC",
"credentials": "{\"clientId\":\"clientId123\",\"userName\":\"username\",\"password\":\"password123\"}"
}
说明:节点获取设备的MQTT Basic凭据并添加到消息metadata。credentials 字段为包含凭据的字符串化JSON对象。
示例3 — 将X.509凭据添加到metadata
入站消息
Metadata:
1
2
3
4
{
"deviceName": "SmartMeter-001",
"deviceType": "SmartMeter"
}
Originator: 来源实体为具有 X.509 凭据(o3Qwq2xqQz1pQ3R1Z1wYH9MYx3q2Yw2aC0EXAMPLE+CERIFICATEpQxG4b1g0O7r2kVq8pQIDAQAB)的设备。
节点配置
1
2
3
{
"fetchTo": "METADATA"
}
出站消息
消息经 Success 连接发送,metadata已更新。
Metadata:
1
2
3
4
5
6
{
"deviceName": "SmartMeter-001",
"deviceType": "SmartMeter",
"credentialsType": "X509_CERTIFICATE",
"credentials": "o3Qwq2xqQz1pQ3R1Z1wYH9MYx3q2Yw2aC0EXAMPLE+CERIFICATEpQxG4b1g0O7r2kVq8pQIDAQAB"
}
说明:节点获取设备的X.509凭据并添加到消息metadata。credentials 字段为不含头尾的X.509证书字符串。
示例4 — 将设备访问令牌添加到data
入站消息
Data:
1
2
3
4
{
"temperature": 33,
"humidity": 56.2
}
Originator: 来源实体为具有 Access Token 凭据(sm001_token_123)的设备。
节点配置
1
2
3
{
"fetchTo": "DATA"
}
出站消息
消息经 Success 连接发送,data已更新。
Data:
1
2
3
4
5
6
{
"temperature": 33,
"humidity": 56.2,
"credentialsType": "ACCESS_TOKEN",
"credentials": "sm001_token_123"
}
说明:节点获取来源实体的凭据,将 credentialsType 和 credentials 添加到消息data。credentials 为包含设备访问令牌的字符串。
示例5 — 将MQTT凭据添加到data
入站消息
Data:
1
2
3
4
{
"temperature": 33,
"humidity": 56.2
}
Originator: 来源实体为具有 MQTT Basic 凭据("{"clientId":"clientId123","userName":"username","password":"password"}")的设备。
节点配置
1
2
3
{
"fetchTo": "DATA"
}
出站消息
消息经 Success 连接发送,data已更新。
Data:
1
2
3
4
5
6
7
8
9
10
{
"deviceName": "SmartMeter-001",
"deviceType": "SmartMeter",
"credentialsType": "MQTT_BASIC",
"credentials": {
"clientId": "clientId123",
"userName": "username",
"password": "password"
}
}
说明:节点获取设备的MQTT Basic凭据并添加到消息data。credentials 字段为包含凭据的JSON对象。
示例6 — 将X.509凭据添加到metadata
入站消息
Data:
1
2
3
4
{
"temperature": 33,
"humidity": 56.2
}
Originator: 来源实体为具有 X.509 凭据(o3Qwq2xqQz1pQ3R1Z1wYH9MYx3q2Yw2aC0EXAMPLE+CERIFICATEpQxG4b1g0O7r2kVq8pQIDAQAB)的设备。
节点配置
1
2
3
{
"fetchTo": "DATA"
}
出站消息
消息经 Success 连接发送,data已更新。
Data:
1
2
3
4
5
6
{
"temperature": 33,
"humidity": 56.2
"credentialsType": "X509_CERTIFICATE",
"credentials": "o3Qwq2xqQz1pQ3R1Z1wYH9MYx3q2Yw2aC0EXAMPLE+CERIFICATEpQxG4b1g0O7r2kVq8pQIDAQAB"
}
说明:节点获取设备的X.509凭据并添加到消息data。credentials 字段为不含头尾的X.509证书字符串。