首页 > 解决方案 > Eclipse Hono - 401 未经授权的错误(即使凭据正确)

问题描述

我正在使用以下命令在 Eclipse Hono 中创建租户

$ curl -X POST -i -H 'Content-Type: application/json' -d '{"tenant-id": "testenant1"}' 
http://localhost:28080/tenant
HTTP/1.1 201 Created
location: /tenant/testenant1
content-length: 0

使用以下命令在租户中注册设备

curl -X POST -i -H 'Content-Type: application/json' -d '{"device-id": "1"}' 
http://localhost:28080/registration/testenant1
HTTP/1.1 201 Created
location: /registration/testenant1/1
content-length: 0

使用以下命令对注册的设备进行身份验证

$ curl -i -X POST -H 'Content-Type: application/json' --data-binary '{
     "device-id": "1",
    "type": "hashed-password",
     "auth-id": "newAuth1",
     "secrets": [{
           "pwd-plain": "mylittle"
     }]
     }' http://localhost:28080/credentials/testenant1
HTTP/1.1 201 Created
location: /credentials/testenant1/newAuth1/hashed-password
content-length: 0

当我尝试使用以下命令将数据发送到此已注册和经过身份验证的设备时。

curl -X POST -i -u newAuth1@testenant1:mylittle -H 'Content-Type: application/json' -d '{"temp": 23.07, "hum": 45.85}'  http://localhost:8080/telemetry

HTTP/1.1 401 未经授权的内容长度:0

我将收到 401 Unauthorized 错误(我期待 503 - Service Unavailable 错误)。

注意:我之前使用过类似的方法,并且效果很好。我不确定我是否遗漏了什么。

标签: eclipse-hono

解决方案


您在发布数据时使用了错误的凭据。用户名始终由auth-idtenant-id组成,以@.

你需要使用:

curl -X POST -i -u newAuth1@testenant1:mylittle -H 'Content-Type: application/json' -d '{"temp": 23.07, "hum": 45.85}'  http://localhost:8080/telemetry

也就是说,根据您用于注册租户和设备的 URI,您似乎使用的是相当旧的 Hono 版本。请考虑升级到最新版本 (1.1.1) 以利用最近的开发/错误修复...


推荐阅读