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来判断是否一致
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来判断是否一致
相关文章推荐
- spring boot架构设计——权限验证及API接口统一返回格式
- web api 单点登录(SSO) 权限验证
- 基于Filter<过滤器>登录权限验证设计心得
- 使用sqlite3的接口函数完成一个用户登录验证功能模块设计 要封装成独立函数,在独立的main中调用测试;
- web api 单点登录(SSO) 权限验证
- Jeeplus框架SSM+shiro权限控制中实现跳过登录验证访问接口数据
- web api 单点登录(SSO) 权限验证
- Web API接口设计经验总结
- [置顶] Java+Eclipse+Maven+struts2从MySQL数据库中查询用户密码实现简单的登录验证
- SprinMVC 拦截器验证权限和登录与注销的实现
- C#微信网页开发---JSSDK使用 通过config接口注入权限验证配置
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计
- SSO单点登录 cas_server通过查询数据库验证用户名、密码正确性
- Struts2(1)-Web中登录权限验证思路
- ASP.NET网站权限设计实现(三)——套用JQuery EasyUI列表显示数据、分页、查询
- 【3】.net MVC 使用IPrincipal进行Form登录即权限验证
- 【WEB API项目实战干货系列】- API登录与身份验证(三)
- 有效的使用和设计COM智能指针——条款11:以类型安全的方式创建资源和查询接口
- shiro 权限控制框架 入门级实例(一)加密、登录验证
- spring mvc整合shiro登录 权限验证