平臺介紹-開放API接口-鑒權

? ? ? ?平臺的理念是一個組織內部只建一套系統。但是現實情況是,組織內部已經建立了很多系統,是不能一次性替代的,只能先搭起平臺,然后逐步開始替換。這樣就不可避免的存在其他系統和平臺進行交互的問題。

? ? ? 平臺為此設計了開放API接口。其中的核心問題是鑒權。鑒權有多種模式,平臺選擇了簽名鑒權模式,省去了先握手獲取Token,然后用Token訪問的復雜過程。下面詳細說明接口簽名鑒權設計原理。

? ? ? 接入系統首先需要從平臺獲取應用ID(AppID)和應用密鑰(AppSecret)

? ? ? 接入系統調用平臺API時,需要填充如下頭信息:

QLM-Open-App-Id:應用ID
QLM-Open-Auth-Mode:固定值Signature
QLM-Open-CA-Signature:簽名值,這個是鑒權的核心
QLM-Open-CA-Timestamp:時間戳,單位毫秒
Accept:響應類型,固定為*/*
Content-Type:application/json; charset=UTF-8
Content-MD5:請求Body體數據的 Content-MD5 值

簽名計算是鑒權的核心,它可以確保是由AppID對應的客戶端發起的,且發起內容在傳輸過程中沒有被篡改。簽名過程如下:

1、準備待簽名字符串。

第一行:HTTP的請求方法,需大寫。距離:GET、POST。

第二行:固定為*/*

第三行:請求頭中的QLM-Open-CA-Timestamp值

第四行:請求頭中的 Content-Type 值

第五行:請求頭中的QLM-Open-CA-Timestamp

第六行:請求地址,注意不含服務器及其端口

注意行以/n結束,不要加/r,另外大小寫是敏感的。

2、計算簽名。

使用 AppSecret(應用密鑰) 對待簽名字符串進行 HmacSHA256 加密處理

服務器端校驗原理,從請求頭里獲取應用ID,查詢后臺登記信息,找到對應的AppSecret,對信息進行同樣的處理,最后驗證簽名是否一樣。

基于同樣原理,可以對請求body做校驗,確保傳輸過程中,請求沒有被篡改。基本方式是客戶端對body進行處理,然后將結果存入Content-MD5頭中,服務器端收到請求后,做同樣處理,然后驗證是否一致。

小技巧:平臺提供的接口可能會大改,為了保持兼容,接口地址第一段是版本,目前只提供了/V1/*,將來會提供/V2/*。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78287.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78287.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78287.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

多端定制系統開發:打造高效全平臺覆蓋的APP解決方案

在移動互聯網時代,用戶需求日益多樣化,企業若想觸達更廣泛的受眾,僅靠單一平臺的應用已遠遠不夠。無論是iOS、Android、Web端,還是智能手表、車載設備等新興終端,多端適配已成為企業數字化轉型的剛需。多端定制系統開發…

Linux電源管理(5)_Hibernate和Sleep功能介紹

原文:Linux電源管理(5)_Hibernate和Sleep功能介紹 1. 前言 Hibernate和Sleep兩個功能是Linux PM的核心功能,它們的目的是類似的:暫停使用——>保存上下文——>關閉系統以節電>恢復系統——>恢復上下文——>繼續使用。 本文…

Spring 命名空間注入:p、c 與 .util 的深度解析

在 Spring 框架的開發過程中,XML 配置是一種常見且強大的方式來管理 Bean。為了讓配置更加簡潔、易讀,Spring 提供了多種命名空間注入的方法,其中 p 命名空間注入、c 命名空間注入和 .util 命名空間尤為重要。本文將詳細介紹這三種命名空間的…

RUST變量學習筆記

1,作用域概念 捕獲環境 2,所有權概念 Rust則是通過所有權和借用來保證內存安全。很多人不理解為啥說Rust是內存安全的,其實就是在默認情況下,你是寫不出內存不安全的代碼的。 Rust的所有權并不難理解,它有且只有如下…

探索 Spring AI 的 ChatClient API:構建智能對話應用的利器

探索 Spring AI 的 ChatClient API:構建智能對話應用的利器 前言 在當今人工智能蓬勃發展的時代,智能對話系統成為了眾多應用的核心組成部分。無論是客服機器人、智能助手還是聊天應用,都離不開高效、靈活的對話處理能力。Spring AI 作為 S…

開源ERP系統對比:Dolibarr、ERPNext與Odoo

對于尋求開源ERP解決方案的企業而言,Dolibarr、ERPNext和Odoo是三個備受關注的選擇。它們各自擁有獨特的優勢和特點,適用于不同規模和需求的組織。以下是對這三個系統的詳細介紹和對比,以幫助您更好地理解它們的差異,并結合中文支…

【2025年】MySQL面試題總結

文章目錄 1. MySQL 支持哪些存儲引擎?默認使?哪個?2. MyISAM 和 InnoDB 有什么區別?3. 事務的四大特性?4. 并發事務帶來了哪些問題?5. 不可重復讀和幻讀有什么區別?6. MySQL 事務隔離級別?默認是什么級別&#xff1…

Linux常用命令29——delgroup刪除組

在使用Linux或macOS日常開發中,熟悉一些基本的命令有助于提高工作效率,delgroup 是用于刪除用戶組的一個命令。此命令通常由超級用戶(root)運行,或者通過 sudo 提權來操作。本篇學習記錄delgroup命令的基本使用。 下面…

字節暑期實習-網絡運維工程師面經

崗位描述 這個是ByteIntern實習,是暑期實習崗位 崗位 一面 先自我介紹 抓項目技術(會進行確認是什么技術) TCP的三次握手和四次揮手 序列號和確認應答號的位置和大小 序列號是隨機的嗎? 序列號為什么是隨機的? …

5.3刷題

P3370 【模板】字符串哈希 #include<bits/stdc.h> using namespace std; #define int long long typedef unsigned long long ull; int n; ull myhash(string s){ull code 0, x 131, y 140814840257324663;for(int i 0; i < s.size(); i){code (code * x (ull)…

Kettle下載安裝教程

## 什么是Kettle Kettle&#xff08;現在也稱為Pentaho Data Integration&#xff0c;簡稱PDI&#xff09;是一款開源的ETL&#xff08;Extract-Transform-Load&#xff09;工具&#xff0c;用于數據抽取、轉換和加載。它允許用戶通過圖形化界面設計和執行數據集成流程&#xf…

FreeRtos實戰從入門到精通--任務創建和刪除(動態方法)--事了拂衣去,深藏功與名

FreeRtos是之前的一些聰明的工程師寫的免費且開源的嵌入式實時操作系統代碼&#xff0c;由于我們實際工作中不需要再去寫rtos&#xff0c;我們只需要用就行了&#xff0c;所以博主這里只分享項目工程實戰相關的內容&#xff0c;具體rtos源碼&#xff0c;可以無需理會&#xff0…

Java通用Mapper自定義方法

目錄 一、定義通用 Mapper 接口二、繼承通用 Mapper 實現自定義方法三、注冊自定義 Mapper 接口四、在實體類對應的 Mapper 接口中使用自定義方法五、實現自定義方法的 SQL 邏輯注解方式XML 映射文件方式六、使用自定義方法七、注意事項在 Java 持久層開發中,MyBatis 的通用 M…

Android WebRTC回聲消除

文章目錄 安卓可用的回聲消除手段各種回聲消除技術優缺點WebRTC回聲消除WebRTC回聲消除回聲消除處理流程WebRTC AECM APP 安卓可用的回聲消除手段 硬件回聲消除 使用 AudioRecord 的 VOICE_COMMUNICATION 模式&#xff1a;通過 AudioRecord 的 VOICE_COMMUNICATION 音頻源可以…

基于 SAFM 超分辨率上采樣模塊的 YOLOv12 改進方法—模糊場景目標檢測精度提升研究

在復雜視覺環境中,如低光照、霧天或遠距離拍攝等場景下,圖像質量下降導致目標模糊,使得傳統目標檢測模型難以實現高精度識別。YOLO系列作為主流單階段檢測框架,在速度和精度方面表現出色,但在模糊和小目標場景中仍存在性能瓶頸。本文提出一種面向 YOLOv12 的創新性改進方法…

Spring 事務的底層原理常見陷阱

一、Spring 事務的底層原理 1. 核心機制 動態代理&#xff08;AOP&#xff09;&#xff1a; Spring 通過動態代理&#xff08;JDK 或 CGLIB&#xff09;生成代理對象&#xff0c;攔截被 Transactional 注解標記的方法。事務攔截器&#xff1a; TransactionInterceptor 負責管…

Java SE(6)——類和對象(一)

1.初始面向對象 1.1 什么是面向對象 Java是一門純面向對象的編程語言(Object Oriented Program&#xff0c;簡稱OOP)&#xff0c;在面向對象的世界里&#xff0c;一切皆為對象。面向對象是解決問題的一種思想&#xff0c;主要依靠對象之間的交換來完成一件事情 1.2 面向過程…

cpp細碎知識點

1 重寫 (Override): 派生類中定義一個與基類虛函數具有相同函數簽名&#xff08;函數名、參數列表、返回類型&#xff09;的函數&#xff0c;這被稱為重寫。 重寫意味著派生類提供了基類虛函數的一個特定于派生類的實現。 重寫是實現多態的關鍵 2 虛基類 (Virtual Base Class…

若依 FastAPI + Vue3 項目 Docker 部署筆記( 啟動器打包教程)

本文記錄了將 start.bat 打包成 .exe 啟動器的詳細教程&#xff0c;適合項目交付或導師演示用。 &#x1f9ed; 一、如何將 start.bat 打包為啟動器 .exe&#xff08;含圖標 自動打開瀏覽器&#xff09; ? 1. 創建三大功能腳本 start.bat → 啟動項目&#xff08;docke…

基于springboot的金院銀行廳預約系統的設計及實現(源碼+lw+部署文檔+講解),源碼可白嫖!

摘要 隨著信息技術在管理上越來越深入而廣泛的應用&#xff0c;信息管理系統的實施在技術上已逐步成熟。信息管理系統是一個不斷發展的新型學科&#xff0c;任何一個單位要生存要發展&#xff0c;要高效率地把內部活動有機地組織起來&#xff0c;就必須建立與自身特點相適應的…