Postman - 使用pre-request-script動態(tài)計算簽名

OpenApi一般都有簽名手销,在對接的時候歇僧,不管文檔寫得多么完善,總是會有人不明白锋拖,所以可以提供一個Postman的Collection诈悍,里面包含了簽名邏輯

整體思路

  • 每個對接方分配一對appKey和appSecret,其中appSecret不能泄露
  • 每個請求需要appKey, timestamp以及signature
  • 根據(jù)請求信息(method, url, body) + appSecret生成signature

請求樣例

  • 請求URL如下
https://www.tenmao.com/hello/world?app_key={{appKey}}&signtime={{timestamp}}&signature={{signature}}

ps: 因為歷史原因兽埃,這里的簽名信息放在URL里面侥钳,其實最好還是放在header

簽名Pre-request-Script

let timestamp = new Date().getTime().toString();

//從環(huán)境變量讀取appKey和appSecret
const appKey = pm.environment.get("appKey")
const appSecret = pm.environment.get("appSecret")
console.log(`基本信息: appKey=${appKey}, appSecret=${appSecret}, timestamp=${timestamp}`)
if (!appKey || !appSecret) {
    //如果不存在就直接拋出異常,這樣就會彈出錯誤信息柄错,同時不會再執(zhí)行請求
    throw new Error("請先在環(huán)境變量中配置appKey和appSecret")
}

//計算簽名 - 獲取計算簽名的數(shù)據(jù)
var method = request.method;

var canonicalUrl = pm.request.url.getPath();
var data = pm.request.body.raw;
if (!data) {
    data = "";
}

var message = method.toLowerCase() + "\n"
+ encodeURIComponent(canonicalUrl) + "\n"
+ data;

//計算簽名 - 第一次摘要(針對時間戳)
var signKey = CryptoJS.HmacSHA1(timestamp, appSecret).toString(CryptoJS.enc.Hex);

console.log("timestamp:" + timestamp + ", appSecret:" + appSecret + ",signKey:" + signKey)

//計算簽名 - 第二次摘要(計算最終簽名)
var signature = CryptoJS.HmacSHA1(message, signKey).toString(CryptoJS.enc.Hex);
console.log(`簽名信息: \nmessage=${message}\nsignKey=${signKey}\nsignature=${signature}`)

//簽名信息設(shè)置到環(huán)境變量
pm.environment.set("timestamp", timestamp)
pm.environment.set("signature", signature)

script中關(guān)鍵點

  • 環(huán)境變量: pm.environment.get("appKey"), pm.environment.set("timestamp", timestamp)
  • ES6引入的字符串格式化語法: appKey=${appKey}, appSecret=${appSecret}, timestamp=${timestamp}
  • 異常提醒: throw new Error("請先在環(huán)境變量中配置appKey和appSecret")
  • 簽名計算: CryptoJS.HmacSHA1(timestamp, appSecret).toString(CryptoJS.enc.Hex)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舷夺,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子售貌,更是在濱河造成了極大的恐慌给猾,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颂跨,死亡現(xiàn)場離奇詭異敢伸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)恒削,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門池颈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钓丰,你說我怎么就攤上這事躯砰。” “怎么了斑粱?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵弃揽,是天一觀的道長。 經(jīng)常有香客問我则北,道長,這世上最難降的妖魔是什么痕慢? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任尚揣,我火速辦了婚禮,結(jié)果婚禮上掖举,老公的妹妹穿的比我還像新娘快骗。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布方篮。 她就那樣靜靜地躺著名秀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪藕溅。 梳的紋絲不亂的頭發(fā)上匕得,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天,我揣著相機(jī)與錄音巾表,去河邊找鬼汁掠。 笑死,一個胖子當(dāng)著我的面吹牛集币,可吹牛的內(nèi)容都是我干的考阱。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼鞠苟,長吁一口氣:“原來是場噩夢啊……” “哼乞榨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起当娱,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤吃既,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后趾访,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體态秧,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年扼鞋,在試婚紗的時候發(fā)現(xiàn)自己被綠了申鱼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡云头,死狀恐怖捐友,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情溃槐,我是刑警寧澤匣砖,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站昏滴,受9級特大地震影響猴鲫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谣殊,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一拂共、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧姻几,春花似錦宜狐、人聲如沸势告。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咱台。三九已至,卻和暖如春俭驮,著一層夾襖步出監(jiān)牢的瞬間回溺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工表鳍, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留馅而,地道東北人。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓譬圣,卻偏偏與公主長得像瓮恭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子厘熟,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容