ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Open API 安全设计

2022-01-11 20:02:20  阅读:170  来源: 互联网

标签:加密 请求 accessToken 安全 API 参数 应用 Open 店铺


如何保证外网开放接口的安全性。

1.使用加签名方式,防止数据篡改。
2.信息加密与密钥管理,AES加密。
3.搭建OAuth2.0认证授权,授权之后获取accessToken。
4.使用令牌方式,先获取token,带着token发送请求。
5.搭建网关实现黑名单和白名单。

一、令牌方式搭建搭建API开放平台

方案设计:

1.第三方机构申请一个appId,通过appId去获取accessToken,每次请求获取accessToken都要把老的accessToken删掉

2.第三方机构请求数据需要加上accessToken参数,每次业务处理中心执行业务前,先去dba持久层查看accessToken是否存在(可以把accessToken放到redis中,这样有个过期时间的效果),存在就说明这个机构是合法,无需要登录就可以请求业务数据。不存在说明这个机构是非法的,不返回业务数据。

3.好处:无状态设计,每次请求保证都是在我们持久层保存的机构的请求,如果有人盗用我们accessToken,可以重新申请一个新的taken.

二、基于OAuth2.0协议方式

原理:
主流分为商家自研和ISV(独立软件开发商,应用服务商)模式

商家自研,基本是自己的店铺商户,子公司等。平台提供应用挂店铺的形式。一个应用可以挂多个店铺
ISV模式,同样一个应用挂多个店铺,是独立软件供应商,提供应用服务。平台在应用服务市场提供购买服务产品,商家购买服务后方可使用。

流程:
1、应用服务商(商家自研)提供授权连接(参数appId:应用服务商应用ID,appSecret:秘钥,自带参数state,回调时带回,回调地址),访问到平台进入平台授权登录。
2、登录成功,回调应用服务商,此时应用服务商回调地址为应用配置的回调地址或者授权时连接中配置回调(return_url=http//)地址。
3、回调时,返回自带参数和code,code2分钟有效。
4、通过appId,code来获取,openid(client_id店铺id),店铺信息,accessToken,refreshToken,accessTokenExpireTime过期时间。
accessToken一天或者一周有效,refreshToken一周+1天有效或者一个月有效。
5、如果没有店铺信息,则通过获取店铺信息结果获取,通过openid(client_id)获取店铺信息。

三、信息加密与密钥管理

  • 单向散列加密
  • 对称加密
  • 非对称加密
  • 安全密钥管理

1、发放加密key,按照规则加密参数,参数暴露,加密sign验证来源。
2、RSA加密是一种非对称加密,发放公钥私钥。
3、AES加密,发放加密key,参数非暴露,通过传入的client_id进行参数解密。

四、白名单验证

1、在操作系统层面,配置 iptables,拒绝指定 IP 的网络请求。
2、在 Web Server 层面,通过 Nginx 自身的 deny 选项 或者 lua 插件 配置 IP 黑名单。
3、在应用层面,在请求服务之前检查一遍客户端 IP 是否在黑名单(服务网关)。

标签:加密,请求,accessToken,安全,API,参数,应用,Open,店铺
来源: https://www.cnblogs.com/stubborn-dude/p/15789528.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有