銷售license是商業軟體的貫用商業模式。用戶向商家購買軟體安裝盤搭載license許可,才可以使用該軟體。我們作為軟體開發者,為了保護自身的權益,在軟體開發過程中也不可避免的會設計license管控機制。下麵就講一下設計一個基礎的license控制機制需要考慮的方方面面。 license管控方式 ...
銷售license是商業軟體的貫用商業模式。用戶向商家購買軟體安裝盤搭載license許可,才可以使用該軟體。我們作為軟體開發者,為了保護自身的權益,在軟體開發過程中也不可避免的會設計license管控機制。下麵就講一下設計一個基礎的license控制機制需要考慮的方方面面。
license管控方式
license大體有兩種管控方式,可概括為認證和鑒權。認證是指用戶身份認證,鑒權是檢驗用戶是否具備使用軟體某些功能的許可權。
1. 認證:通過軟體的認證機制可以判斷用戶的身份是否合法,只有身份合法的用戶才可以使用軟體。身份認證可以防止黑客或者競爭對手使用軟體,做研究仿製;維護產品的原創性和競爭力。
2. 鑒權:鑒權是限制用戶能使用軟體的哪些功能,是能使用整個軟體的功能全集呢還是只能使用一個子集。鑒權方式有兩種:功能有無的鑒權-有許可權的用戶能操作功能界面使用軟體,無許可權的用戶屏蔽操作入口;功能受限使用的鑒權-根據用戶購買的license規格限制用戶使用的次數或者使用軟體處理數據的規模。
3.有效期:license使用期限的限制,超過期限後軟體不允許再使用。需要申請延期或者重新申請license。
License實現方案
下麵講一下License中認證和鑒權的常規實現方式。
1.認證:前面說了認證的目的是識別用戶是否為合法用戶,對於線上系統通常的做法是設計一個登錄認證機制,通過用戶名和密碼登錄,登錄成功的用戶即是合法用戶。離線單機工具一般是通過綁定軟體安裝的機器或者發放序列號的方式控制。如果是綁定軟體安裝的機器需要在license申請前採集機器指紋(含CPU、硬碟、MAC地址等一種或者幾種信息的加密數據)。機器指紋的加密演算法一般是採用不可逆的加密演算法,如MD5等。
2. 鑒權:對於鑒權而言,需要將控制的功能項編碼和受限使用的控制信息加密後放到license文件中,在軟體運行過程中實時檢測。鑒權信息一般是通過可逆的加密演算法加密,如RSA非對稱加密演算法。license發放的時候用公鑰加密,軟體運行時通過私鑰解密。
License管理流程
既然License是一種管控系統使用的憑證,那麼肯定就有申請憑證、審核申請的流程。涉及的角色也包括申請人、審批人、用戶。常規流程如下:
上面只是一個最簡易的license管理流程,實際設計中需要根據具體的業務來,例如上面的審核人分幾級,如何設置等,不同的組織結構是不一樣的。有的license管理還需要考慮升級、延期的處理;畢竟升級舊的license和新申請一個license在商務價格上是不一樣的。