java接口安全怎么处理_Restful API 接口安全性设计
1.API接口设计规范
2.安全性设计
a.白名单限制
仅接受特定系统的请求响应,调用方的IP地址需要在本系统中报备,否则无法调用
b.合法身份合法性验证
Basic Authentication :这种方式是直接将用户名和密码放到Header中,使用 Authorization: Basic Zm9vOmJhcg== ,使用最简单但是最不安全。
TOKEN认证:这种方式也是再HTTP头中,使用 Authorization: Bearer ,使用最广泛的TOKEN是JWT,通过签名过的TOKEN。
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。
类似JWT,只是用户登录成功后将token信息是保存在redis中,可以设置token有效期,或主动将token失效等,并返回给用户。
其他认证接口时必须在header中输入token信息,并验证。
@Aspect
@Component
public class SecurityAspect {
@Resource(name = "redisTokenManager")
private TokenManager tokenManager;
@Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping)")
public void controllerAspect() {
}
/**
* 接收到客户端请求时执行
*
* @param pjp
* @return
* @throws Throwable
*/
@Around("controllerAspect()")
public Object execute(ProceedingJoinPoint pjp) throws Throwable {
// 从切点上获取目标方法
MethodSignature methodSignature = (MethodSignature) pjp.getSignature();
Method method = methodSignature.getMethod();
/**
* 验证Token
*/
if (method.isAnnotationPresent(TokenSecurity.class)) {
// 从 request header 中获取当前 token
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
.getRequest();
String token = request.getHeader(Constant.DEFAULT_TOKEN_NAME);
if (StringUtils.isEmpty(token)) {
throw new TokenException("客户端X-Token参数不能为空,且从Header中传入,如果没有登录,请先登录获取Token");
}
// 检查 token 有效性
if (!tokenManager.checkToken(token)) {
String message = String.format("Token [%s] 非法", token);
throw new TokenException(message);
}
}
// 调用目标方法
return pjp.proceed();
}
}
OAuth2.0: 这种方式安全等级最高,- 但是也是最复杂的。如果不是大型API平台或者需要给第三方APP使用的,没必要整这么复杂。
c.流量控制可借助Guava中对应RateLimiter模块功能,也可借助Redis高效响应机制自己设计,以调用方id+接口名称为KEY,设置接口调用上限即可,按天实时更新数据增量。
限流控制:主要用于服务的请求频率限制,避免由于服务吞吐量跟不上造成上层调用请求堆积过大而导致服务垮掉甚至应用奔溃问题。目前提供了单机版 限流和分布式限流功能。简而言之,通过限流控制,我们可以在方法级别的粒度控制到在XXX秒内最多接收XXX次调用。
并发控制:与限流控制类似,并发控制更加强调的是并发量。该功能能够保证服务在任何时刻的并发量控制。目前提供了单机和分布式两个版本的并发控 制。简而言之,通过并发控制,我们可以在方法级别的粒度控制到某个服务同时间最多不能超过XXX次请求被调用。
java接口安全怎么处理_Restful API 接口安全性设计相关推荐
- java jsoup解析开彩网api接口json数据实例
https://www.cnblogs.com/zdz8207/p/7288830.html 开彩网apiJava技术学习 https://www.itkc8.com json-lib-2.4-jdk ...
- java扫描接口_一种扫描接口并生成可调用API接口文档的方法与流程
本发明属于JavaWeb开发技术领域,涉及一种API接口文档的生成方法,尤其是一种扫描接口并生成可调用API接口文档的方法. 背景技术: API(Application Programming Int ...
- 淘宝/天猫按图搜索商品API接口,以图搜商品API接口,图片搜索API接口
一.淘宝/天猫按图搜索商品API接口,拍立淘搜索图接口,以图搜商品API接口代码分享 1.公共参数: 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) s ...
- 小红书商城店铺所有商品接口(整店商品API接口)
小红书商城店铺所有商品接口(整店商品API接口)代码对接如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中,点击获取请求key和secr ...
- 淘宝天猫京东拼多多苏宁抖音等平台关键词监控价格API接口(店铺商品价格监控API接口调用展示)
淘宝京东拼多多苏宁抖音等平台关键词监控价格API接口(店铺商品价格监控API接口调用展示)代码对接如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼 ...
- 淘宝/天猫/1688拍立淘API接口(以图搜商品API接口,图片搜索API接口,图片搜索商品API接口)代码对接教程
淘宝/天猫/1688拍立淘API接口(以图搜商品API接口,图片搜索API接口,图片搜索商品API接口)代码对接教程如下: 1.公共参数 名称 类型 必须 描述(接口代码教程wx19970108018 ...
- 拼多多:item_search-根据关键词取商品列表接口,拼多多关键词搜索API接口,拼多多上货API接口,拼多多API接口
一.拼多多:item_search-根据关键词取商品列表接口,拼多多关键词搜索API接口,拼多多上货API接口代码如下: 1.公共参数: 名称 类型 必须 描述 key String 是 调用key( ...
- 淘宝/天猫获取卖出的商品订单列表API接口,店铺订单API接口,店铺订单详情API接口
一.淘宝/天猫获取卖出的商品订单列表API接口,店铺订单API接口,店铺订单详情API接口代码如下: 1.公共参数: 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接 ...
- 京东商品详情页API接口、京东商品销量API接口、京东商品列表API接口、京东APP详情API接口、京东详情API接口,京东SKU信息接口
京东商品详情页API接口.京东商品销量API接口.京东商品列表API接口.京东APP详情API接口.京东详情API接口,京东SKU信息接口,通过商品ID提取商品详情页各项数据,包含商品标题,sku i ...
最新文章
- leetcode算法题--最大整除子集
- django-内网项目上线测试部署步骤
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(更快的RCNN:通过区域提议网络实现实时)
- nacos 怎么配置 里的配置ip_nacos集群配置
- 【Java】使用springboot运行程序时出现的错误
- 联想tab.android 8,安卓平板顶级对决 联想TAB S8-50 PK 小米平板
- matlab移动文件到另一个文件夹里,Matlab将文件分类移动到不同文件夹中
- caffe+vs2013+window10+GPU(CPU)配置
- 简单的高可用集群实验
- openairinterface 中手动安装编译 UHD, Ubuntu 16.04
- php替换字符串字符,php替换字符串中间字符为省略号的方法
- Adobe Reader 8 简体中文版最新版本
- DPDK (1) - PMD驱动方案
- Protel99se中PCB放置焊盘和设置焊盘大小
- Huffman-哈夫曼编码算法详解
- 计算机相关的俚语,现代俄语计算机俚语的构成方式.pdf
- 【一文带你读懂机器学习】线性回归原理
- 小白如何快速从0基础入门平面设计
- python妹子图软件下载_python3下载妹子图,你懂的。
- 第三章 直接连接的网络
热门文章
- JavaOne 2012:Lambda之路
- EasyMock教程–入门
- postman测试工具,如何对参数使用md5加密
- Requests库实战(二)---破解百度翻译
- linux 进城 管道丢数据,linux – 使用命名管道与bash – 数据丢失的问题
- 鸿蒙系统的挑战,简单的讲解下何为鸿蒙系统,可能会挑战你的认知颠覆你的想象...
- python运维工程师招聘_【python自动化运维工程师工资】图灵学院2020年python自动化运维工程师工资待遇-看准网...
- 苹果电脑怎么投屏到电视_tcl电视怎么投屏
- 计算机应用能力文字录入,2017全国专业技术人员计算机应用能力考试题库-Excel,Word,XP.pdf...
- 6-第三方库离线安装法