API接口鑑權及加密

前言

在爲移動端做API接口時,Java服務器端對接口一般需要做兩種處理。

1.對請求的接口在interceptor 做authorize鑑權

2.對請求過來的參數進行加密校驗,防止參數在傳遞過程中被篡改。

鑑權

鑑權方式我所使用的到的基本上目前有以下三種:

1.session

2.cookie

3.oauth2.0

對於這三種方式,以後細講下。在此不再多說。

加密

對於傳輸過程中防止參數被篡改,可以使用HTTPS來有效的增強安全性。

對於重要的數據傳輸,除了需要https來認證,還需要對傳入參數進行加密解密的校驗,達到雙層保證。

一般處理思路:

將傳入參數組合成字符串,然後做加密,得到加密的token值;調用接口時,同時將此值傳入。服務器拿到此值,根據對應的加密方式解密比對。

來驗證傳入值的完整性。

關於加密方式,這裏不再贅述。可根據接口的重要程度來選擇。

如哈希算法md5、對稱加密的DES、非對稱的RSA或者一些加鹽加密。

以md5爲例,使用Java的SortedMap,對請求參數進行MD5,並傳入。

	SortedMap<Object, Object> requestParams = new TreeMap<Object, Object>();

        requestParams.put("version", "1");
        requestParams.put("userName", "123456");
        requestParams.put("password", "123456");

        StringBuffer requestParamsStringBuffer = new StringBuffer();
        System.out.println("排序之後的Key Value:");
        for (Map.Entry<Object, Object> entry : requestParams.entrySet()) {
            System.out.println(entry.getKey() + " " + entry.getValue());
            requestParamsStringBuffer.append(entry.getKey() + "" + entry.getValue());
        }
        System.out.println(requestParamsStringBuffer.toString());
        String md5="";
        try {
            md5 = MD5.getMd5(requestParamsStringBuffer.toString());
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }

        System.out.println("request params md5加密後:" + md5);
        //request params md5加密後:d42fdf5e525386c648b1303fa2aa5aab

        //當我們傳入傳入參數時,將token=d42fdf5e525386c648b1303fa2aa5aab 與其他參數平級傳入,來防止請求被篡改

接下來,我們在接口文檔中對token進行解釋,並要求移動端此過程調用即可。


bingo!

發佈了193 篇原創文章 · 獲贊 115 · 訪問量 71萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章