Thingsboard - REST API 上的身份验证错误(来自 Curl 命令和 ASP.NET)

Posted

技术标签:

【中文标题】Thingsboard - REST API 上的身份验证错误(来自 Curl 命令和 ASP.NET)【英文标题】:Thingsboard - Authentication error on REST API (FROM Curl command and ASP.NET) 【发布时间】:2018-11-22 13:51:10 【问题描述】:

我可以使用我的凭据登录到 Thingsboard 网站,但是当我尝试使用 CURL 命令连接时,我收到“身份验证失败”错误。

curl -X POST "https://cloud.thingsboard.io/api/auth/login" -d ""username":"XYZPQR@ABCDLMN.com", "password":"Q@34&pwn"" --header "Content-Type: application/json" --header "Accept: application/json"

错误代码

"status":401,"message":"Authentication failed","errorCode":10,"timestamp":1542893993515

但是,当我在 ASP.NET 应用程序中使用相同的用户 ID 和密码来获取授权令牌时,我确实获得了 JWT 令牌,但使用相同的令牌我无法从 Thingsboard 进行任何 REST API 调用。

ASP.NET 核心代码

var response = new HttpResponseMessage();
var client = new HttpClient();                
UserModel model = new UserModel  username = "XYZPQR@ABCDLMN.com", password = "Q@34&pwn" ;
var content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");

response = await client.PostAsync("https://cloud.thingsboard.io/api/auth/login", content);

string data = await response.Content.ReadAsStringAsync();

var userToken = JsonConvert.DeserializeObject<UserToken>(data);

MediaTypeWithQualityHeaderValue contentType = new MediaTypeWithQualityHeaderValue("application/json");

client.DefaultRequestHeaders.Accept.Add(contentType);

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", userToken.token);
Uri url = new Uri("https://cloud.thingsboard.io/api/plugins/telemetry/DEVICE/431be6e0-e8ca-11e8-9e5c-3d544ba4fdfc/values/timeseries?keys=Electricity");

response = await client.GetAsync(url);

模型类

 public class UserModel 
        public string username  get; set; 
        public string password  get; set; 
    

    public class UserToken
    
        public string token  get; set; 
        public string refreshToken  get; set; 
    

请建议,如何从 Thingsboard REST API 获取遥测值。

【问题讨论】:

【参考方案1】:

这是我犯的一个小错误;我将旧代码更改为新代码(如下所示),一切都开始按预期工作。

旧代码

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", userToken.token);

新代码

client.DefaultRequestHeaders.Add("X-Authorization", "Bearer " + userToken.token);

感谢支持。

【讨论】:

以上是关于Thingsboard - REST API 上的身份验证错误(来自 Curl 命令和 ASP.NET)的主要内容,如果未能解决你的问题,请参考以下文章

ThingsBoard——Rest API获取token和刷新token

ThingsBoard——Rest API获取token和刷新token

ThingsBoard——Rest API获取token和刷新token

Thingsboard REST api 始终以状态 401 响应

页面大小和页面如何在获取客户资产中工作在 thingsboard rest api 中?

在 thingsboard 上的自定义控件小部件仪表板上显示 thingsboard 设备属性最新值