反馈已提交

网络繁忙

加密函数实现摘要签名认证方式

  • 文档创建者:Wendy123456
  • 历史版本:4
  • 最近更新:Wendy123456 于 2025-02-11
  • 1. 概述

    1.1 应用场景

    Java代码实现摘要签名认证方式 文档使用 Java 代码实现摘要签名认证方式,但存在一定操作难度。

    1.2 实现思路

    将 Java代码实现摘要签名认证方式 文档中的 Java 代码函数化,FDL 中调用函数就能生成签名。

    2. 操作步骤

    2.1 添加 JAR 文件

    文件下载:fdlzhaiyao.jar

    2.1.1 FDL为独立部署工程

    将 fdlzhaiyao.jar 文件放置到 %Tomcat/webapps/webroot/WEB-INF/lib下,并重启 FDL 工程

    2.1.2 FDL为ops部署工程

    1)如为运维平台部署的项目,请将 fdlzhaiyao.jar 文件上传至 FDL 工程外挂目录的 customlib 文件夹下。
    如忘记工程外挂目录位置,请参考文档查询:导出项目部署信息

    2)重启 FDL 工程。

    2.2 数据服务 API 准备

    用户已经发布API,同时绑定API至应用,并设置应用认证方式为摘要认证。

    16.png

    2.3 生成签名

    1)新建定时任务,拖入「数据转换」节点,进入数据转换节点。

    2)拖入「Spark SQL」算子,输入 SQL 语句:

    select fdlzhaiyaoencry("b7ca33fa-d19f-4c1a-8e98-1e2b400b6f8b","POST","application/json","93ee041b-914a-4f80-bbea-a200611b18f7/demo","{\"paging\":{\"pageSize\":10,\"pageNum\":1},\"params\":[]}") AS   A

    SQL 语句中各参数说明如下表所示:

    用户需要根据下表说明,根据实际情况修改 SQL 语句;更多说明请参见:Java代码实现摘要签名认证方式

    示例SQL中的参数
    含义
    b7ca33fa-d19f-4c1a-8e98-1e2b400b6f8b应用密钥

    数据服务>应用列表,选择摘要签名,即复制 AppSecret,如下图所示:

    17.png

    POST

    请求方法,目前支持传入GET和POST。注:需要大写。

    18.png

    application/jsonBODY 的 MIME 类型

    POST 请求需要写 contentType,GET 请求此处写空字符串

    93ee041b-914a-4f80-bbea-a200611b18f7/demoAPI 配置页面配置的 API 路径

    如果是 get 请求,需要带上参数,例如xxx/xxx?a=1

    示例:http://192.168.5.175:8089/webroot/service/publish/<appid>/api01?a=1&b=2中的加粗部分,不包含首尾的斜杠

    在 API 列表下的授权应用中复制 API 路径,如下图所示:

    19.png

    {\"paging\":{\"pageSize\":10,\"pageNum\":1},\"params\":[]}

    POST 请求时,在 Body 中的参数字符串

    • 对于json:原样所有字符串,包含空格、回车等符号

    • 对于x-www-form-urlencoded:将键值对分别进行 URL 转码,然后使用&连接起来;有键无值、有值无键时正常保留等号

    例如 JSON 格式的 Body,示例为:

    {"paging":{"pageSize":10,"pageNum":1},"params":[]}

    对于以上请求体内容,先做 MD5 处理(输出32位小写字符串),结果再进行 BASE64 编码,得到最终的 Content-MD5 结果。

    注:pageSize 为每页数据条数(最大限制为10000),pageNum为页数,用户可根据实际情况修改这两个参数的值

    3)点击「数据预览」,如下图所示:

    20.png

    完整的预览结果为:HMAC-SHA256 Signature=cKcm3/B9ZpbsJFJDQuiCubttI2PmZ8DQBHgBlbE3IJY=,Nonce=3b735fe9-cbfe-4c82-ba9a-e5c1fb4c0145,Timestamp=1731896867478

    构成元素说明:Signature=Signature值, Nonce=Nonce随机数, Timestamp=Timestamp时间戳

    使用该签名调用 API 时,校验项目:


    验证项目
    通过条件
    Timestamp与服务端当前时间相比,晚5min以内
    Nonce服务端在5min内,没有重复的Nonce
    Signature服务端计算的 Signature 与请求头中的 Signature 完全一致


    2.4 调用数据服务API

    本文示例在 FDL 中调用数据服务发布的 API 。

    1)在本文 2.3 节步骤基础上,拖入参数输出算子,将 2.3 节结果输出为参数 a。如下图所示:

    21.png

    2)再拖入一个「数据转换」节点,进入数据转换节点。

    3)拖入API输入算子,调用 2.2 节已发布的 API。如下图所示:

    需注意:

    • Headers 下需要添加参数 Authorization,值为参数 a;将本文 2.3 节签名中的 Body 内容{\"paging\":{\"pageSize\":10,\"pageNum\":1},\"params\":[]}去掉 \ ,调用 API 时,填入 Body 处。

    • 调试时,参数 a 的值每次使用前都需要重新获取。

    2.png

    4)点击「数据预览」,可看到数据已被取出:

    3.png





    附件列表


    主题: 数据服务
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持