ClientDeviceAuthorizer:设备无权连接
ClientDeviceAuthorizer: Device isn't authorized to connect
我有一个客户端设备 (thing-is-1)
Greengrass 核心设备 (Corething2)
我已经部署了组件:MQTT Moquette Broker、MQTT Bridge、Client Device Authenticator、IP Detector。
我的 MQTT Broker 正在侦听端口 8883
我仔细检查了我所有的 AWS IOT Core 策略:
它包含 AWS 文档中在策略方面提到的所有内容。
但是当我在发现后尝试将我的客户端连接到我的核心时,它在客户端设备上出现以下错误:
正在执行 greengrass 发现...
awsiot.greengrass_discovery.DiscoverResponse(gg_groups=[awsiot.greengrass_discovery.GGGroup(gg_group_id='greengrassV2-coreDevice-Corething2', 核心数=[awsiot.greengrass_discovery.GGCore(thing_arn='arn:aws:iot:eu-west-1:...:thing/Corething2', connectivity=[awsiot.greengrass_discovery.ConnectivityInfo(id='', host_address='', metadata='', port=8883), awsiot.greengrass_discovery.ConnectivityInfo(id='', host_address='', metadata='', port=8883)])], certificate_authorities=['-----BEGIN CERTIFICATE-----\n..\n-----END CERTIFICATE-----\n'])])
在主机端口 8883 尝试核心 arn:aws:iot:eu-west-1:..:[=39=]
连接失败,异常 AWS_IO_SOCKET_TIMEOUT:套接字操作超时。
在主机端口 8883 尝试核心 arn:aws:iot:eu-west-1:..:[=39=]
连接失败,异常 AWS_ERROR_MQTT_UNEXPECTED_HANGUP:连接意外关闭。
所有连接尝试均失败
现在,如果我转到我的核心设备并检查 greengrass.log.. 我会看到:
2022-04-11T15:07:43.899Z [信息] (nioEventLoopGroup-5-3) com.aws.greengrass.device.DeviceAuthClient:创建新会话。 {}
2022-04-11T15:07:44.454Z [信息] (nioEventLoopGroup-5-3) com.aws.greengrass.device.SessionManager:创建了会话。 {sessionId=d65a97e6-1919-4798-8c2d-bb9b44398856}
2022-04-11T15:07:44.473Z [信息] (nioEventLoopGroup-5-3) io.moquette.broker.metrics.MQTTMessageLogger: C->B 连接。 {}
2022-04-11T15:07:44.473Z [信息] (nioEventLoopGroup-5-3) com.aws.greengrass.mqttbroker.ClientDeviceAuthorizer:已检索客户端会话。 {clientId=thing-is-1, sessionId=d65a97e6-1919-4798-8c2d-bb9b44398856}
2022-04-11T15:07:44.799Z [信息] (nioEventLoopGroup-5-3) com.aws.greengrass.mqttbroker.ClientDeviceAuthorizer:设备无权连接。 {clientId=thing-is-1, sessionId=d65a97e6-1919-4798-8c2d-bb9b44398856}
2022-04-11T15:07:44.799Z [信息] (nioEventLoopGroup-5-3) com.aws.greengrass.device.SessionManager:关闭会话。 {sessionId=d65a97e6-1919-4798-8c2d-bb9b44398856}
2022-04-11T15:07:44.800Z [INFO] (nioEventLoopGroup-5-3) io.moquette.broker.MQTTConnection:验证器拒绝了 MQTT 凭证 CId=thing-is-1,证书链=[[
[
版本:V3
主题:CN=AWS IoT 证书
bla bla bla
]]. {}
2022-04-11T15:07:44.800Z [INFO] (nioEventLoopGroup-5-3) io.moquette.broker.MQTTConnection:客户端未提供任何密码且 MQTT 匿名模式已禁用 CId=thing-is-1。 {}
2022-04-11T15:07:44.802Z [信息] (nioEventLoopGroup-5-3) io.moquette.broker.metrics.MQTTMessageLogger:通道不活动。 {}
2022-04-11T15:08:41.247Z [INFO] (pool-1-thread-4) com.aws.greengrass.detector.IpDetectorManager:获取的主机 IP 地址。 {IpAddresses=[/, /]}
我在这里错过了什么?或者如果有一份清单我可以参考以找出可能性。
证书出现了一个问题,我是否需要将我的客户 public 添加到核心中的某个位置?我没有在 aws 文档的任何地方找到它。
我还看到会话已创建,但随后我的身份验证器拒绝了客户端。
我的设备身份验证器具有完整的许可配置。
我的 thing-is-1 与我的核心设备相关联。但是核心设备和客户端设备不属于同一个事物组。 (而且我认为这没有任何区别)
ClientDeviceAuth 组件配置:
{
"reset": [],
"merge": {
"reset": [],
"merge": {
"deviceGroups": {
"formatVersion": "2021-03-05",
"definitions": {
"MyDeviceGroup": {
"selectionRule": "thingName: thing-*",
"policyName": "MyClientDevicePolicy"
}
},
"policies": {
"MyClientDevicePolicy": {
"AllowConnection": {
"statementDescription": "Allow client devices.",
"operations": [
"*"
],
"resources": [
"*"
]
}
}
}
}
}
}
}
我试图同时提供信息和简洁。如果我遗漏任何可能有助于更好地理解问题的信息,请告诉我,我会相应地更新问题。
您的客户端设备身份验证配置似乎将“合并”作为“合并”的子项?那是不正确的。设备组和策略应该是顶级合并下的键。
我有一个客户端设备 (thing-is-1) Greengrass 核心设备 (Corething2)
我已经部署了组件:MQTT Moquette Broker、MQTT Bridge、Client Device Authenticator、IP Detector。
我的 MQTT Broker 正在侦听端口 8883 我仔细检查了我所有的 AWS IOT Core 策略: 它包含 AWS 文档中在策略方面提到的所有内容。
但是当我在发现后尝试将我的客户端连接到我的核心时,它在客户端设备上出现以下错误:
正在执行 greengrass 发现... awsiot.greengrass_discovery.DiscoverResponse(gg_groups=[awsiot.greengrass_discovery.GGGroup(gg_group_id='greengrassV2-coreDevice-Corething2', 核心数=[awsiot.greengrass_discovery.GGCore(thing_arn='arn:aws:iot:eu-west-1:...:thing/Corething2', connectivity=[awsiot.greengrass_discovery.ConnectivityInfo(id='', host_address='', metadata='', port=8883), awsiot.greengrass_discovery.ConnectivityInfo(id='', host_address='', metadata='', port=8883)])], certificate_authorities=['-----BEGIN CERTIFICATE-----\n..\n-----END CERTIFICATE-----\n'])]) 在主机端口 8883 尝试核心 arn:aws:iot:eu-west-1:..:[=39=] 连接失败,异常 AWS_IO_SOCKET_TIMEOUT:套接字操作超时。 在主机端口 8883 尝试核心 arn:aws:iot:eu-west-1:..:[=39=] 连接失败,异常 AWS_ERROR_MQTT_UNEXPECTED_HANGUP:连接意外关闭。 所有连接尝试均失败
现在,如果我转到我的核心设备并检查 greengrass.log.. 我会看到:
2022-04-11T15:07:43.899Z [信息] (nioEventLoopGroup-5-3) com.aws.greengrass.device.DeviceAuthClient:创建新会话。 {} 2022-04-11T15:07:44.454Z [信息] (nioEventLoopGroup-5-3) com.aws.greengrass.device.SessionManager:创建了会话。 {sessionId=d65a97e6-1919-4798-8c2d-bb9b44398856} 2022-04-11T15:07:44.473Z [信息] (nioEventLoopGroup-5-3) io.moquette.broker.metrics.MQTTMessageLogger: C->B 连接。 {} 2022-04-11T15:07:44.473Z [信息] (nioEventLoopGroup-5-3) com.aws.greengrass.mqttbroker.ClientDeviceAuthorizer:已检索客户端会话。 {clientId=thing-is-1, sessionId=d65a97e6-1919-4798-8c2d-bb9b44398856} 2022-04-11T15:07:44.799Z [信息] (nioEventLoopGroup-5-3) com.aws.greengrass.mqttbroker.ClientDeviceAuthorizer:设备无权连接。 {clientId=thing-is-1, sessionId=d65a97e6-1919-4798-8c2d-bb9b44398856} 2022-04-11T15:07:44.799Z [信息] (nioEventLoopGroup-5-3) com.aws.greengrass.device.SessionManager:关闭会话。 {sessionId=d65a97e6-1919-4798-8c2d-bb9b44398856} 2022-04-11T15:07:44.800Z [INFO] (nioEventLoopGroup-5-3) io.moquette.broker.MQTTConnection:验证器拒绝了 MQTT 凭证 CId=thing-is-1,证书链=[[ [ 版本:V3 主题:CN=AWS IoT 证书
bla bla bla ]]. {} 2022-04-11T15:07:44.800Z [INFO] (nioEventLoopGroup-5-3) io.moquette.broker.MQTTConnection:客户端未提供任何密码且 MQTT 匿名模式已禁用 CId=thing-is-1。 {} 2022-04-11T15:07:44.802Z [信息] (nioEventLoopGroup-5-3) io.moquette.broker.metrics.MQTTMessageLogger:通道不活动。 {} 2022-04-11T15:08:41.247Z [INFO] (pool-1-thread-4) com.aws.greengrass.detector.IpDetectorManager:获取的主机 IP 地址。 {IpAddresses=[/, /]}
我在这里错过了什么?或者如果有一份清单我可以参考以找出可能性。 证书出现了一个问题,我是否需要将我的客户 public 添加到核心中的某个位置?我没有在 aws 文档的任何地方找到它。
我还看到会话已创建,但随后我的身份验证器拒绝了客户端。
我的设备身份验证器具有完整的许可配置。 我的 thing-is-1 与我的核心设备相关联。但是核心设备和客户端设备不属于同一个事物组。 (而且我认为这没有任何区别)
ClientDeviceAuth 组件配置:
{
"reset": [],
"merge": {
"reset": [],
"merge": {
"deviceGroups": {
"formatVersion": "2021-03-05",
"definitions": {
"MyDeviceGroup": {
"selectionRule": "thingName: thing-*",
"policyName": "MyClientDevicePolicy"
}
},
"policies": {
"MyClientDevicePolicy": {
"AllowConnection": {
"statementDescription": "Allow client devices.",
"operations": [
"*"
],
"resources": [
"*"
]
}
}
}
}
}
}
}
我试图同时提供信息和简洁。如果我遗漏任何可能有助于更好地理解问题的信息,请告诉我,我会相应地更新问题。
您的客户端设备身份验证配置似乎将“合并”作为“合并”的子项?那是不正确的。设备组和策略应该是顶级合并下的键。