您的位置:首页 > 编程语言 > Java开发

Web API 登录接口,查询接口权限验证设计(理论)

2018-01-26 16:08 274 查看
webapi登录接口设计

1、提供参数,username,password

2、请求post

3、后台创建随机生成的token

String token= UUID.randomUUID().toString().replace(“-“,”“); 放到 redis里面

这里 token可以AES 或者 MD5加密,我这边加密方式是通过公钥加密返回加密后的数据和私钥

4、返回得到 token 和 key(解密用的私钥)

查询接口权限验证(基于 token,key、signs、timestamp和nonce随机数)

每次查询时都会在header里带上以上参数,查询参数以userId为例

1、先判断以上参数都不能为空,和时间戳类型,nonce为interger类型

2、判断传过来的timestamp与服务器生成的timestamp相差,如果大于60s,认为此次请求无效

3、判断nonce,防止60s内重放请求,每次请求带一个随机数,Long或者Integer类型,放到redis一个集合里面,每次请求去判断随机数是否存在于该集合,如果存在则说明此次请求无效,不存在则放到集合里面,由于集合会慢慢变大,所以在生成集合的时候放大redis里面一个集合生成时间,每次请求去判断这个时间与当前时间的差值,如果大于60s则清空集合,设置新的集合生成时间

4、根据前台传的token和key解密真正的token ,判断token是否存在、登录的token是否一致

5、判断signs是否一致,参数是否被篡改,signs的生成方式为 token+key+nonce+参数(Userid)的MD5值,由于MD5不可逆,后端根据传过来的以上参数重新生成signs来判断是否一致
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  web api java springboot token