TDengine Restful Authorization 自定义Token

news2025/1/10 23:33:30

Restful 接口是 TDengine 最常用的接口,仅次于 JDBC。TDengine 支持 HTTP 和 HTTPS,但通常情况下,大家不想搞证书,又在内网环境中,采用 HTTP 方式比较多。但 HTTP 是明文传输,只要抓个包就知道账号密码了。因此需要对用户名和密码进行加密。

TDengine 支持 Basic 认证与自定义认证两种机制,下面进行简单介绍。

目录

    • Basic
      • 示例
        • 创建测试用户
        • 对账号密码进行 Base64 加密
        • 使用Basic方式查询数据库
    • 自定义Token
      • 示例
        • 获取自定义Token并查询
        • 特殊字符处理
    • 批量查询Token脚本

Basic

Basic 比较简单,就是对用户名密码进行 BASE64 编码。其实并不安全,因为可以直接对编码近解密。

示例

创建测试用户
taos> create user test pass 'P@ssw0rd';
Create OK, 0 row(s) affected (0.002246s)

taos> grant read on *.* to test;
Query OK, 0 row(s) affected (0.002141s)
对账号密码进行 Base64 加密

在这里插入图片描述

使用Basic方式查询数据库
[root@c2-125 ~]# curl -L -H "Authorization: Basic dGVzdDpQQHNzdzByZA==" 127.0.0.1:6041/rest/sql -d "select current_user();"
{"code":0,"column_meta":[["current_user()","VARCHAR",11]],"data":[["test@c2-125"]],"rows":1}

自定义Token

为了提供安全性,TDengine 支持自定义Token,即对用户名密码进行特殊加密。

示例

获取自定义Token并查询
[root@c2-125 ~]# curl http://127.0.0.1:6041/rest/login/test/P@ssw0rd
{"code":0,"desc":"QIIxd+q+/t7a8qdtNZmtONryp201ma04r0sDvQTxtaDa8qdtNZmtONryp201ma04"}

[root@c2-125 ~]# curl -L -H "Authorization: Taosd QIIxd+q+/t7a8qdtNZmtONryp201ma04r0sDvQTxtaDa8qdtNZmtONryp201ma04" 127.0.0.1:6041/rest/sql -d "select current_user();"
{"code":0,"column_meta":[["current_user()","VARCHAR",11]],"data":[["test@c2-125"]],"rows":1}
特殊字符处理

以上密码比较简单,如果是复杂密码呢?

taos> alter user test pass 'P@#!$%000';
Query OK, 0 row(s) affected (0.002323s)
[root@c2-125 ~]# curl http://127.0.0.1:6041/rest/login/test/P@#!$%000
curl http://127.0.0.1:6041/rest/login/test/P@#taos%000
{"code":3,"desc":"Authentication failure"}

需要对特殊字符进行 URL编码才能传输。

[root@c2-125 ~]# curl http://127.0.0.1:6041/rest/login/test%2FP%40%23%21%24%25000
{"code":0,"desc":"QIIxd+q+/t7a8qdtNZmtONryp201ma04Uj6laakTHxe8oWCwoeYGPdryp201ma04"}

[root@c2-125 ~]# curl -L -H "Authorization: Taosd QIIxd+q+/t7a8qdtNZmtONryp201ma04Uj6laakTHxe8oWCwoeYGPdryp201ma04" 127.0.0.1:6041/rest/sql -d "select current_user();"
{"code":0,"column_meta":[["current_user()","VARCHAR",11]],"data":[["test@c2-125"]],"rows":1}

批量查询Token脚本

数据库创建好以后,DBA 会为业务创建一系列的账号,如果一个编码查询,就太没有效率了。

以下脚本会逐行读取一个文件。每行应该包含一个用户名和一个空格分隔的密码。然后脚本会将密码编码成URL格式,并向服务器发送HTTP请求,可能是为了认证并获取令牌。服务器的响应被保存到了一个临时文件中,然后脚本提取出令牌。用户名与他们对应的令牌被添加到名为 token_list.txt 的文件中。

#!/bin/sh
cat $1 |while read l
do
        uname=$(echo $l |awk '{print $1}')
        pass=$(echo $l |awk '{print $2}')
        ulpass=$(echo ${pass} | tr -d '\n' | xxd -plain | sed 's/\(..\)/%\1/g')
        curl "http://127.0.0.1:6041/rest/login/${uname}/${ulpass}" >token.tmp
        token=$(cat token.tmp |awk -F '"' '{print $6}')
        echo "$uname: $token" >> token_list.txt
done
[root@c2-125 ~]# cat userlist 
test P@#!$%000
[root@c2-125 ~]# sh getToken.sh userlist
[root@c2-125 ~]# cat token_list.txt 
test: QIIxd+q+/t7a8qdtNZmtONryp201ma04Uj6laakTHxe8oWCwoeYGPdryp201ma04

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1220947.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

23111705[含文档+PPT+源码等]计算机毕业设计SSM框架美妆商城全套电商购物

文章目录 **软件开发环境及开发工具:****项目功能介绍:****论文截图:****实现:****代码片段:** 编程技术交流、源码分享、模板分享、网课教程 🐧裙:776871563 软件开发环境及开发工具&#xff…

uart控制led与beep

仲裁模块代码: // 外设控制模块,根据uart接收到的数据,控制led与beep的标志信号。 module arbit(input wire sys_clk ,input wire sys_rst_n ,input wire pi_flag …

VBA如何快速识别Excel单元格中的文本数字

Excel中一种非常特殊的数字,这些数字看似数字,其实是文本格式(下文简称为文本数字),在单元格的左上角会有一个绿色小三角作为标志,如B1:B3单元格。 在编程时为什么需要区分普通数字和文本数字呢&#xff…

【JavaSE】基础笔记 - 图书管理系统(保姆教程,含源码)

目录 1、图书管理系统介绍 2、大致框架 3、代码实现步骤 3.1、Book图书类 3.2、BookList书架类 3.3、User用户类、AdminUser类、NormalUser类 3.4、IOperation操作接口 3.5、继承IOperation接口的操作类 3.6、完善User类 3.7、Mian类 4、完整代码 Java的三大特性是…

机器学习 天气识别

>- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/Nb93582M_5usednAKp_Jtw) 中的学习记录博客** >- **🍖 原作者:[K同学啊 | 接辅导、项目定制](https://mtyjkh.blog.csdn.net/)** >- **🚀…

.nc格式文件的显示及特殊裁剪方式

最近我们遇到一个nc格式的文件,需要将它做成报告插图,bing搜索一番以后,了解到nc的全名为NetCDF(network Common Data Form),是一种网络通用数据格式,广泛用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域。…

ArcGIS创建格网

目录 1、创建网格 2、裁剪边界外的网格 3、只保留边界内完整的网格 1、创建网格 首先,我们在创建渔网前,需要指定渔网覆盖的范围。这里我们就以四子王为例 在ArcMap软件中,我们依次选择“Toolboxes”→“Data Management Tools&#xff0…

基于STC12C5A60S2系列1T 8051单片机的模数芯片ADC0832实现模数转换应用

基于STC12C5A60S2系列1T 8051单片的模数芯片ADC0832实现模数转换应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍模数芯片ADC0832介绍通过模数芯片ADC0832把电压模…

【Linux】重定向|重新理解Linux下一切皆文件

文章目录 一、什么是重定向输出重定向的原理认识一下输出重定向的系统调用输出重定向的另外写法 二、浅谈输入重定向三、重定向和进程替换有冲突吗四、Linux下一切皆文件总结 一、什么是重定向 理解重定向之前:先理解一个叫做文件描述符的具体操作。 文件描述符&a…

C语言求0—7所能组成的奇数个数

完整代码&#xff1a; // 求0—7所能组成的奇数个数 //根据题意&#xff0c;应该是没有重复数字的&#xff0c;所以最大只能为八位数 //如果可以重复的话&#xff0c;那么位数就限制不了&#xff0c;然后奇数的个数就是无穷大了 #include <stdio.h>int main() {int coun…

万宾科技智能井盖传感器,提升市政井盖健康

市政井盖就是城市里不可或缺的基础设施之一&#xff0c;关于它的监测工作可马虎不得。它承载着保护市民的交通安全以及城市正常运转的重要使命。虽然现在城市化的速度很快&#xff0c;但是传统的市政井盖管理方式变得有些力不从心了。井盖的覆盖范围很广&#xff0c;如果单单依…

开启数据库审计 db,extended级别或os级别)并将审计文件存放到/opt/oracle/audit/下

文章目录 1、登录到数据库2、查看审计状态3、创建审计目录4、启用审计5、设置审计文件路径5、再次查看结果 1、登录到数据库 使用SQL*Plus或者其他Oracle数据库客户端登录到数据库。 sqlplus / as sysdba;2、查看审计状态 show parameter audit;目前是DB状态&#xff0c;并且…

【超好用的工具库】hutool-all工具库的基本使用

简介&#xff08;可不看&#xff09;&#xff1a; hutool-all是一个Java工具库&#xff0c;提供了许多实用的工具类和方法&#xff0c;用于简化Java开发过程中的常见任务。它包含了各种模块&#xff0c;涵盖了字符串操作、日期时间处理、加密解密、文件操作、网络通信、图片处…

计算机毕业设计 基于SpringBoot的医院档案管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

自动驾驶-BEV感知综述

BEV感知综述 随着自动驾驶传感器配置多模态化、多源化&#xff0c;将多源信息在unified View下表达变得更加关键。BEV视角下构建的local map对于多源信息融合及理解更加直观简洁&#xff0c;同时对于后续规划控制模块任务的开展也更为方便。BEV感知的核心问题是&#xff1a; …

【proverif】proverif的语法3-认证协议的验证代码-案例分析

proverif-系列文章目录 【proverif】proverif的下载安装和初使用【proverif】proverif的语法1-解决中间人攻击-代码详解【proverif】proverif的语法2-各种密码原语的编码【proverif】proverif的语法3-认证协议的验证代码-案例分析 (本文) 文章目录 proverif-系列文章目录前言一…

51单片机应用从零开始(六)·逻辑运算

51单片机应用从零开始&#xff08;一&#xff09;-CSDN博客 51单片机应用从零开始&#xff08;二&#xff09;-CSDN博客 51单片机应用从零开始&#xff08;三&#xff09;-CSDN博客 51单片机应用从零开始&#xff08;四&#xff09;-CSDN博客 51单片机应用从零开始&#xff08;…

【入门篇】1.1 redis 基础数据类型详解和示例

文章目录 1. 简介2. Redis基础数据类型2.1 String类型场景示例常用命令示例 2.2 List类型场景示例 2.3 Set类型场景示例 2.4 Hash类型场景示例 2.5 Sorted Set类型 3. 使用Redis存储数据的注意事项1. 内存管理2. 数据持久化3. 高并发下的性能考量 4. 参考资料 1. 简介 Redis概…

springMvc中的拦截器【巩固】

先实现下想要的拦截器功能 package com.hmdp.utils;import com.hmdp.entity.User; import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Ht…

【SpringMvc】SpringMvc +MyBatis整理

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;本文主要梳理 Java 框架 中 SpringMVC的知识点和值得注意的地方 &#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以关…