深信服aTrust作為下一代的遠(yuǎn)程辦公接入解決方案,同樣集成了短信接口集成的功能,由于我們的客戶只有短信寶的短信接口,網(wǎng)絡(luò)上也搜不到響應(yīng)的對(duì)接方案,經(jīng)過(guò)我們工程師的嘗試,按以下步驟操作即可完成短信接口的對(duì)接,在此之前請(qǐng)確認(rèn)aTrust可以訪問(wèn)互聯(lián)網(wǎng)并配置了DNS服務(wù)器。
首先我們要參考所使用的短信接口調(diào)用規(guī)則:https://www.smsbao.com/openapi/213.html,可以發(fā)現(xiàn)調(diào)用格式如下:
http://api.smsbao.com/sms?u=USERNAME&p=PASSWORD&m=PHONE&c=CONTENT
登錄到深信服aTrust的后臺(tái)管理頁(yè)面,在短信網(wǎng)關(guān)的位置進(jìn)行新增短信網(wǎng)關(guān)的配置。

填寫接口名稱等基本信息后,主要就是要提交的請(qǐng)求內(nèi)容和方式,我們采用GET方式提交。

短信的模板如下配置:
#驗(yàn)證碼通知
{{user.username}},您好!
您的驗(yàn)證碼為:{{env.code}} , {{env.smsEffectiveTime}}分鐘內(nèi)有效 , 請(qǐng)妥善保管!
#上線風(fēng)險(xiǎn)通知
您的賬號(hào)存在異常登錄行為,請(qǐng)關(guān)注:
賬號(hào):{{user.username}}
時(shí)間:{{config.dateTime}}
地點(diǎn):{{env.city}} {{env.ip}}
詳情:{{env.events}}
終端名稱:{{env.deviceName}}
終端類型:{{env.deviceOS}}
如果是您本人操作,請(qǐng)忽略此次提醒
如果非本人操作,請(qǐng)盡快修改密碼或聯(lián)系管理員處理
#SPA分發(fā)通知
尊敬的{{user.username}}先生/女士:
您的辦公接入客戶端的安全碼為{{env.spaSecret}}
當(dāng)客戶端連接地址{{env.serverAddress}}失敗時(shí)可通過(guò)此安全碼進(jìn)行激活后正常登錄。注意安全碼有效期截止時(shí)間為{{env.spaValidDate}}。
#管理員驗(yàn)證碼通知
{{user.username}},您好!
您的驗(yàn)證碼為:{{env.code}} , {{env.smsEffectiveTime}}分鐘內(nèi)有效 , 請(qǐng)妥善保管!
至此配置都比較簡(jiǎn)單,驗(yàn)證內(nèi)容也可以成功的提交到短信寶的調(diào)用接口上,但是返回值的相應(yīng)處理上遇到了一些問(wèn)題,直接看響應(yīng)內(nèi)容是包含http頭等相關(guān)的信息,直接將認(rèn)證條件設(shè)置為body等于0,aTrust無(wú)法正常處理。
{ "statusCode": 200, "data": { "headers": { "server": "nginx/1.11.2", "date": "Thu, 02 Mar 2023 04:54:53 GMT", "content-type": "text/plain; charset=iso-8859-1", "content-length": "1", "connection": "close" }, "body": "0" } }
因?yàn)槎绦艑毎l(fā)送短信成功只會(huì)返回一個(gè)數(shù)字0,但是aTrust默認(rèn)只能處理xml或json格式,所以要用到預(yù)格式處理來(lái)封裝我們需要的內(nèi)容。

/**
* 示例函數(shù):
* @brief 后置響應(yīng)預(yù)處理函數(shù)。對(duì)http(s)認(rèn)證服務(wù)器返回的數(shù)據(jù),預(yù)處理成
* 標(biāo)準(zhǔn)的json格式數(shù)據(jù)。
* 如果啟用了此腳本,則會(huì)使用result中的數(shù)據(jù)進(jìn)行認(rèn)證成功判斷
* @param response{object} http(s)認(rèn)證服務(wù)器返回的結(jié)果對(duì)象
* @param result{object} 響應(yīng)預(yù)處理后的結(jié)果對(duì)象(json格式)
*/
function AfterResponse(response, result) {
//TODO: 在此添加nodejs代碼
if(response.body.toString().indexOf("0") != -1)
{
result.code = 1;
}
else
{
result.code = -1;
}
}
AfterResponse(response, result);
思路就是把返回來(lái)的對(duì)象轉(zhuǎn)成字符串,然后找有沒(méi)有0,有就給result對(duì)象的code屬性賦值1表示發(fā)送成功,沒(méi)有就賦值-1表示失敗。

完成上述配置后,短信接口配置完成。