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 requestParams = new TreeMap();

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

        StringBuffer requestParamsStringBuffer = new StringBuffer();
        System.out.println("排序之后的Key Value:");
        for (Map.Entry 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!

你可能感兴趣的:(api,服务器,interceptor,加密,SortedMap,服务器)