📖
tbds
  • 前言
  • 部署
    • 安装步骤
  • 平台管理
    • 用户管理
    • 项目管理
    • 系统设置
  • 组件访问开发
    • kafka
    • hadoop
    • hbase
    • accessKey
    • hive
    • spark
    • ftp
    • portalApi
    • hermes
    • 代码访问组件demos
      • hbase
      • hdfs
      • kafka
      • hive
  • 数据接入
    • 数据接入
      • TDBank产品化介绍及使用指引
      • TDBank数据接入指引
      • TDBank采集接口详解
      • OGG Flume Adapter 部署文档
      • DB Demo
      • HDFS Demo
    • Hippo管理
    • 进度监控
    • 血缘分析
  • 实时计算
    • 任务管理
    • 库表模板管理
  • 数据分析
    • 数据交互
    • ideX
  • 任务调度
    • 操作指引
    • 工作流
      • 基本概念
      • 任务基本信息
      • 任务调度设置
      • 任务参数配置
        • shell 脚本
        • ftp导入hdfs
        • kafka导入hbase
        • kafka导入hdfs
        • hdfs导出hbase
        • hive sql 脚本
        • hive导入hdfs
        • hdfs导出DB(mysql,postgreSQL,sql server)
        • tstorm任务
        • spark任务
        • mapreduce任务
        • db导入hdfs
        • hdfs导出hive
        • hdfs导出hive-tdsort
        • hive导出mysql
        • mysql导入hive
      • Demo
        • FTP导入HDFS
        • HDFS导出HBASE
        • HDFS导出Mysql
        • HDFS导入HIVE
        • Hive SQL脚本
        • Hive导出MySQL
        • Hive导入HDFS
        • KAFKA导出HBASE
        • KAFKA导出HDFS
        • MYSQL导入HDFS
        • MySQL导入Hive
        • Shell脚本
        • SPARK任务
      • 升级
        • 集成代码更新
        • rpm升级
      • 补充
        • 手动迁移base组件
        • 手动安装runner组件
        • 自定义任务开发文档
        • 时间隐式变量说明
        • 下发并发数说明和调整操作
        • Issues版本说明
        • 设置分组
        • 跨工作流依赖
      • 常见问题定位和解决方式
        • 常用操作
        • 实时接入任务hdfs2hive (tdsort)
        • 实例日志获取失败
        • 实例日志中提示下载文件失败
        • taskSchedule指标为空定位方法
        • 实例依赖失效确认方式
        • 任务实例诊断按钮无调度信息
        • 诊断和定位操作参考
        • 实例一直等待终止定位
        • mongodb 常见问题和处理办法
    • 任务管理
      • 工作流列表
      • 任务管理
      • 任务运行管理
      • 其他
    • 服务器配置
      • 基本概念
      • 操作指南
  • Tstorm
    • Tstorm介绍
    • 开发实例
      • wordcount
  • 数据展现
    • 自助报表
  • 数据资产
    • 库表管理
      • 可管理库表
      • 可读写库表
      • 无归属库表
      • 维表管理
      • 新建表
    • 数据血缘
    • 数据提取
      • 数据地图
      • 任务列表
      • 架构关联
  • 运维中心
    • 系统运维
      • 组件部署
      • 链接归集
      • 诊断
      • 备份
    • 访问管理
    • 文件管理
    • 监控告警
      • 监控
      • 告警
  • 机器学习
    • 系统简介
    • TDInsight功能介绍
      • 工作流
        • 新建工程
        • 新建工作流
        • 创建和配置节点
        • 运行
        • 日志查看
      • 数据输入输出
      • 组件
        • Spark组件
        • Sparkstreaming组件
        • pySpark组件
        • xgboost组件
    • 多实例并发
      • 3种方式驱动实例
      • 实例查询
      • 历史实例
    • TDInsight模型与在线推理
      • 数据流
      • 模型的训练与使用
      • 模型在线服务
    • TDInsight算法/组件说明
      • 数据说明
      • 特征工程
        • 数据预处理
        • 特征提取
        • 特征转换
        • 特征选择
        • 特征评估
      • 机器学习
        • 分类算法
        • 聚类算法
        • 回归算法
        • 推荐算法
        • 关联规则
      • 模型评估
        • Binary Evaluator
        • Multi Evaluator
        • Regression Evaluator
      • 可视化
        • 关系
        • 分布
        • 对比
        • 组合
      • 深度学习算法简介
        • 计算机视觉
        • 自然语言处理
        • 表示学习
Powered by GitBook
On this page
  • 介绍
  • 原理:
  • 示例:
  • 1.根据用户id获取用户的AccessInfo
  • 2.获取header信息, DEMO
  • 3.调用方式

Was this helpful?

  1. 组件访问开发

portalApi

介绍

套件portal提供主要的resful api都经过单点登录认证,保证用户通过浏览器访问调用portal接口的时候进行过单点登录操作。如果想使用代码进行接口调用就要自己做模拟登陆后才可以进行使用,增加了客户端代码的使用难度。因此我们开发了另一套可以基于accesskey 认证的方式调用portal api的方案。

原理:

通过添加header实现 header名称:Authorization header值:通过获取AccessKey并加密获取;格式:TBDS SecretId Timestamp Nonce Signature 其中:TBDS 为固定字符串,表示以TBDS方式去认证

          SecretId 是步骤1生成签名串所用的SecretId 
          Timestamp 是生成签名串所用的Timestamp ,单位:毫秒 
          Nonce 是生成签名串所用的Nonce 
          Signature 是根据步骤2Demo方式生成的签名串

TBDS、SecretId、Timestamp、Nonce、Signature直接以空格拼

示例:

在http请求头中添加

--header "Authorization:TBDS CHTZh3auty0S6gyjJkN6k8G3VGw5nS2GjrSK 1508161241426 64 FDen%2FTOQ9Q%2F%2BV60H8KBn65wWVEI%3D"

备注:若添加的api 不在 /api/ 的请求目录下,如添加/openapi/platform/的api需要通过AccessKey 方式调用,则修改 tbds-portal-common/resources/custom.properties 的 portal.auth.urls ,添加需要控制的url请求。 #api need user login portal.auth.urls=/api/,.html,/openapi/platform/*

1.根据用户id获取用户的AccessInfo

GET /openapi/access/header/{userId}

返回结果:

{
    "resultCode": "0",
    "message": null,
    "resultData": {
        "id": 1,
        "secureId": "CHTZh3auty0S6gyjJkN6k8G3VGw5nS2GjrSK",
        "secureKey": "S2GqXVOJvdAjykRrJJdAvsyv4fi5lxxi",
        "userName": "admin",
        "userId": 1,
        "creator": "admin",
        "module": "ALL",
        "operationType": "ALL",
        "enable": "true",
        "createTime": "2017-10-12 16:31:11",
        "updateTime": "2017-10-12 16:31:11",
        "operTypes": ["ALL"]
    }
}

2.获取header信息, DEMO

调用:getAccessAuthHeader获取

package utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.HmacUtils;
import pojo.AccessKey;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Date;
import java.util.Random;

public class AccessUtils {

    public static String getAccessAuthHeader(String prefix_url, Integer userId) throws Exception {
        String request_url = prefix_url + "/openapi/access/header/" + userId;
        String content = ConnectionUtils.get(request_url);
        AccessKey accessKey = getAccessKeyByRequestContent(content);
        if(accessKey == null){return  null;}
        System.out.println("access info=" + accessKey.toString());
        Long timestamp = new Date().getTime();
        Integer nonce = new Random().nextInt(10*8) + 1;
        String signature = AccessUtils.generateSignature(accessKey.getSecureId(), timestamp, nonce, accessKey.getSecureKey());
        String accessHeader =  "TBDS " + accessKey.getSecureId() + " " + timestamp + " " + nonce + " " + signature;
        System.out.println("access encode=" + accessHeader);
        return accessHeader;
    }

    private static AccessKey getAccessKeyByRequestContent(String content){
        JSONObject object = JSONObject.parseObject(content);
        if("0".equals(object.getString("resultCode"))){//操作成功
            return JSON.parseObject(object.getString("resultData"), AccessKey.class);
        } else { //操作失败
            System.out.println(object.getString("message")); //获取失败信息
            return null;
        }
    }

    private static String generateSignature(String secureId, long timestamp, int randomValue, String secureKey) {
        Base64 base64 = new Base64();
        byte[] baseStr = base64.encode(HmacUtils.hmacSha1(secureKey, secureId + timestamp + randomValue));
        String result = "";
        try {
            result = URLEncoder.encode(new String(baseStr), "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return result;
    }
}

获取TBDS认证工具Jar

传入两个参数:1、portal url; 2、用户Id

java -jar api-test-1.0-SNAPSHOT-jar-with-dependencies.jar http://10.151.139.105 1

3.调用方式

curl -X GET --header "Authorization:TBDS CHTZh3auty0S6gyjJkN6k8G3VGw5nS2GjrSK 1508161241426 64 FDen%2FTOQ9Q%2F%2BV60H8KBn65wWVEI%3D" http://10.254.99.17/api/whoami
PreviousftpNexthermes

Last updated 4 years ago

Was this helpful?