出于安全考虑,近期推进一次app和api间通讯的认证的流程。舍弃了app认证这种思路,走的用户授权的思路。
具体流程如下:
accessId 授权id, accessToken 授权token, accessExp 授权过期时间。 accessToken 哈希,作为sign附加在参数上。(如果上https,只要将accessToken附加返回就好了) accessId 关联,存于服务器端。 accessId 关联的用户id比较是否一致。 access 信息,请求更新接口,获取新的 access 信息。 考虑的安全问题:
access_token 拼接后进行hash得到sign,附加在请求里面。服务端对sign进行校验。保证参数不被篡改。 accessId ,接口,时间戳作为唯一判断来避免重放。 memberId 与服务端通讯,假如 memberId 被修改,防线瞬间就瓦解了,所以不以app持有的 memberId 为凭证,而是以 accessId 关联的 memberId 为准。