tft每日頭條

 > 生活

 > sdkapi怎麼設置

sdkapi怎麼設置

生活 更新时间:2025-02-02 18:28:03

在C端流量紅利逐漸消失的今天,很多企業開始轉向 to B的生意。

而B端的生意就離不開SDK和API。這是公司對外輸出技術方案必不可少的兩種不同的形式。

因此,本文将結合SDK和API進行介紹,分析它們的區别以及如何設置激活與安全機制。

sdkapi怎麼設置(如何設計B端SDK和API的激活與安全機制)1

1. SDK和API的區别

首先我們簡單來講一下SDK和API的區别。

1.1 什麼是API?

API,全稱Application Programming Interface,即應用程序編程接口。

API其實就是把做好的功能,封裝成各種預先定義好的函數,其他人想使用這些已有的功能,隻需要調用這些函數,并傳遞必要的參數即可。

API的主要作用是,程序員不需要深究API背後功能實現的具體邏輯,程序員隻需要直接調用API就可以使用其背後的功能邏輯,這節省了程序員一大部分的工作,大大提升了效率。

sdkapi怎麼設置(如何設計B端SDK和API的激活與安全機制)2

舉個例子:

銀行的窗口就類似一個個的API,他們分别有不同的功能,比如取款、存款、對公等業務。

而我們預先填好的表格信息,交給窗口的工作人員,就是傳遞必要的“參數”信息給這個窗口API,然後使用它的存款功能。

我們不需要理解工作人員具體需要哪些操作,其中涉及多少複雜邏輯。

隻需要來到窗口(調用API),上交表格(傳遞必要信息)就能使用該功能服務。

1.2 什麼是SDK?

SDK 就是 Software Development Kit 的縮寫,翻譯過來——軟件開發工具包。

這是一個覆蓋面相當廣泛的名詞,可以這麼說:輔助開發某一類軟件的相關文檔、範例和工具的集合都可以叫做SDK。

SDK可以簡單的認為是一系列API的程序包集合。在這個程序包中是一個完整的軟件功能,這份程序包幾乎是全封閉的,隻有一個小小接口(API)可以聯通外界。

sdkapi怎麼設置(如何設計B端SDK和API的激活與安全機制)3

還是剛剛銀行的例子:

可以把銀行看做是一整個SDK,銀行SDK程序包能幫你完成存款、取款等業務。

銀行SDK唯一聯通外界的就是它的大門,或者說是取号機(API),隻有進入銀行然後取号,才能在不同的窗口辦理服務。

而這些不同的窗口,就可以看成一個個不同功能的API接口。

2. API的接入安全機制

安全機制,其實是為了保護我方後台,主要有兩點:

  1. 不被不明身份者訪問
  2. 不被惡意大量的請求攻擊

先來簡單說一下API的接入安全機制。

API的安全機制設計主要考慮兩個方面:

  1. API接入方案如何避免接口盜用(防止不明身份者訪問)
  2. Http接口請求如何避免攻擊(防止被惡意大量請求攻擊)

第一個方面,需要客戶對自家的後台做一層封裝,然後我們後台僅接受客戶後台接口傳遞的請求。

第二個方面,需要在我方後台建立IP白名單,提供給客戶後台,方便雙方進行加密驗證。識别哪些是客戶的請求,哪些是惡意請求。

sdkapi怎麼設置(如何設計B端SDK和API的激活與安全機制)4

3. SDK的接入安全機制

為了防止客戶拿到我們的SDK以後白嫖,或者為所欲為,我們需要在客戶接入SDK,請求我方服務的時候進行激活校驗。

就像是我們買票進站乘車一樣,需要出示身份證和車票進行校驗方可通過。

SDK最終都是會被集成到硬件設備中提供服務,尤其是AI公司的技術方案,不管是視覺還是語音,最後交付的都是硬件産品。

通常激活的時機,都是在硬件設備進行第一次啟動的時候進行。

SDK的激活涉及到我方對客戶的計費,所以激活邏輯的設計要非常的仔細和嚴謹(畢竟都是錢哪。。)

一般來說,SDK的激活方案可以分為三種(以下說法參考思必馳的産品授權方案):

  1. 預燒錄
  2. 預登記
  3. 動态注冊

預燒錄,指的是,我們後台預先生成授權的license文件,然後預先寫入硬件設備的存儲文件中。在設備首次啟動的時候,就直接調取license文件進行激活。這種方式适用于需要不聯網提供服務的場景。

預登記,指的是,預先登記設備白名單,以用戶設備注冊激活的一種授權方式。這種方式适用于客戶提前知道所需授權設備的設備标識的場景

動态注冊,指的是,每次設備激活,後台動态給這些設備進行激活并注冊的一種形式。這種方式适用于客戶可以提供設備的唯一标識,但是提前不知道哪些設備需要授權,不知道有多少設備需要授權的場景。

下面想主要講一下,我在設計預登記和動态注冊時遇到的一些坑。

3.1 預登記對我方友好,但是對客戶不太靈活

預登記方式其實對我方來說是比較友好的,因為客戶提前提供準确的設備唯一标識的時候,我們可以很方面的進行激活和統計,說直白點,就是方便收錢。

所以,客戶為了省錢,有可能采取作弊策略:将一個設備的唯一标識給多台設備進行使用

因為設備标識,一般是設備序列号(SN),對于硬件廠商來說是可以自己按照一定的規則随便刷的。

那為了防止被客戶白嫖,我們自然要設計一套防作弊策略:不僅僅采集客戶提供的設備序列号,還要采集一些設備的其他信息進行輔助判斷,該序列号隻綁定了一台設備

sdkapi怎麼設置(如何設計B端SDK和API的激活與安全機制)5

當客戶想白嫖我們,将設備A的序列号給設備B使用,那麼在激活校驗的時候,就會發現設備B的序列号關聯的信息和我們記錄的信息(設備A)不同,如此就可以認定客戶是想白嫖,激活失敗。

上述方式看起來比較完美的解決了客戶作弊的問題。但是對于部分客戶來說就會造成不便。

有些客戶在對接SDK後,會進行測試。在測試的過程中,客戶會不斷的對硬件設備進行刷機、恢複出廠設置等騷操作。

而刷機、恢複出廠設置會改變設備的信息(例如AndroidID),那麼就會造成同樣的序列号在同一台設備上不能激活了。

因為刷機改變了它的設備信息,我們會認為這不是同一台設備。

你可能會說,那客戶再寫一個序列号不就行了,反正客戶可以自己刷序列号。

客戶是上帝,你不能指望客戶去幹這樣的累活。當然是我們來優化了。

為了解決這個問題,我們想到一個方案:超級序列号。這個序列号必須是我們來生成(可控),擁有無限次激活,可以在多台設備上使用的超能力

但是為了防止客戶拿這個超級序列号白嫖我們,我們需要給這個超級序列号設置時間限制。在有效時間内可以随意使用,一旦過了有效期就會失效。

sdkapi怎麼設置(如何設計B端SDK和API的激活與安全機制)6

3.2 動态注冊雖然靈活,但是對于統計來說麻煩

動态注冊就是在設備第一次啟動激活的時候,上傳設備的信息,包括:序列号、MAC(藍牙 WiFi)、IMEI和AndroidID

但是這些信息不一定能獲取到。

IMEI,國際移動設備識别碼(International Mobile Equipment Identity,IMEI)

IMEI本該最理想的設備ID,具備唯一性,恢複出廠設置不會變化(真正的設備相關)。

但是Android6.0以後,就需要用戶授權才能使用,而且在Android10.0以後,就會徹底拒絕獲取IMEI。

并且,IMEI其實隻有通訊的設備才會有,如果沒有通訊(簡單理解,就是電話卡)模塊的話,也不一定有IMEI号。

序列号(SN)

設備序列号由廠商提供,如果廠商比較規範的話,序列号應該是唯一的,也不會随刷機或恢複出廠設置等改變。

但是你不能把利益建立在人性的基礎上,那太不靠譜。所以序列号,其實更多隻能作為輔助信息來進行判斷。

MAC地址

MAC地址一般指藍牙MAC、WiFi Mac或者是兩者的拼接。但是獲取同樣需要權限,而且如果設備沒有藍牙模塊,沒有WiFi模塊的話,也不一定有MAC地址。

Android ID

Android ID 是獲取門檻最低的,不需要任何權限,64bit 的取值範圍,唯一性算是很好的了。但是不足之處也很明顯:刷機、root、恢複出廠設置等會使得 Android ID 改變

所以,我們在設計動态注冊激活邏輯的時候,就需要考慮到這些情況。

動态注冊的激活邏輯,就是每次激活的時候,後台記錄設備上傳的四個設備信息(有的不一定有)。

然後每次其他設備激活的時候,就把該要激活的設備信息在已激活的設備信息記錄中進行比對,比對的規則有兩方面:

  1. 所上報的設備信息種類是否一緻,種類指的是四種設備信息
  2. 所上報的設備信息是否一緻

sdkapi怎麼設置(如何設計B端SDK和API的激活與安全機制)7

這樣的激活邏輯,雖然能保證最大程度的識别出不同的設備,但是會給統計激活設備上(統計是為了收錢)造成麻煩。

例如,AndroidID,會随着刷機、恢複出廠設置而改變。這就會成為客戶扯皮的點。

客戶會說:“我并沒有更換設備,隻是因為設備故障需要刷機或者恢複出廠設置,你就多收我一台設備的錢,當我是冤大頭嗎?”

雖然這可以通過商務的手段去解決,但是還是那句話,客戶是霸霸嘛。

其實,從上面我們描述四大設備信息的特征來看,AndroidID具有如下優秀屬性:

  1. 一定能獲取到;
  2. 隻有刷機操作才會改變,無法人為指定。

所以,完全可以以AndroidID作為主要依據,隻要AndroidID一緻,不管其他參數種類和參數值是否相同,都可以認為是一台設備。

我們隻需要找出那些,因為刷機或恢複出廠設置導緻AndroidID改變的設備,而這些是客戶扯皮的主要部分。

因此,在我們給設備動态注冊的時候,要采用嚴格的規則,隻要有一點不一樣,就重新注冊設備信息。

但是在統計激活的設備信息上,可以根據一定的規則,将具有争議的注冊設備信息給統計出來,做到扯皮也是要有準備和技術含量的。

sdkapi怎麼設置(如何設計B端SDK和API的激活與安全機制)8

SDK 和 API 是公司輸出技術的主要手段,而如何設計激活邏輯和安全機制,是保證公司不被白嫖的手段,需要認真和謹慎的考慮。

以上内容是在工作中的一些總結,僅供大家參考。

本文由 @Jarvan 原創發布于人人都是産品經理。未經許可,禁止轉載

題圖來自Unsplash,基于CC0協議

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved