我尝试连接Google云IOT MQTT Brocker。在Java客户端中,我收到了未被授权连接(5)的异常。
设备ID和其他细节都是正确的。在云IOT中为设备设置了公钥。
使用下面存储库的示例代码。 https://github.com/GoogleCloudPlatform/java-docs-samples/tree/master/iot/api-client/mqtt_example
我尝试连接Google云IOT MQTT Brocker。在Java客户端中,我收到了未被授权连接(5)的异常。
设备ID和其他细节都是正确的。在云IOT中为设备设置了公钥。
使用下面存储库的示例代码。 https://github.com/GoogleCloudPlatform/java-docs-samples/tree/master/iot/api-client/mqtt_example
另一个需要考虑的问题是配置的GCP IoT Core云区域。
我曾经遇到过类似的问题。我将GCP IoT Core云区域配置为"asia-east1",而客户端应用程序默认云区域为"us-central1"。
如果云区域没有正确配置,Python/NodeJS IoT Core示例(mqtt、http、end2end)将返回错误,例如:
Creating JWT using RS256 from private key file rsa_private.pem
Publishing message 1/100: 'test/test_1-payload-1'
('on_connect', 'Connection Refused: not authorised.')
('on_disconnect', '5: The connection was refused.')
--cloud_region=asia-east1
。python cloudiot_mqtt_example.py --project_id=project_id --registry_id=registry_id --device_id=device_id --private_key_file=rsa_private.pem --algorithm=RS256 --cloud_region=asia-east1
需要检查的一些事情:
1)您确定 SSL 密钥的格式与您注册的匹配吗?RS256 与 RS256 with X509 等等?
2)您是否在 mqtt 客户端上设置了 TLS 并获取了 Google 根证书?
2a)>=TLS 1.2 吗?
3)验证 JWT 是否具有正确的“aud”值(项目 ID,而不是项目名称),并且具有正确的发布和到期时间?