出于安全考虑,近期推进一次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
为准。