//场景:公司要跟第三方公司合作,提供接口给对方对接,这样需要对接口进行授权,不然任何人都可以调我们公司的接口,会导致安全隐患:

思路: 在每个接口请求参数都带上ApiKey 和sign签名:
我们在对接前,给对方提供一个ApiKey 和密码secrect,这2个值随便自己定义,只要双方都约定好就行了: 对方要做的事情: 对请求参requestDTO 除sign签名字段外,转成JSON字符串,
然后前后拼上secrect,再MD5加密得到sign签名:
伪代码:
String reqStr=JSON.toJSONStirng(requestDTO);
StringBuilder sb = new StringBuilder();
sb.append(BeeBoxConstant.SECRET);
sb.append(json);
sb.append(BeeBoxConstant.SECRET);
String sign = Md5Util.getMd5(sb.toString());
requestDTO.setSign(sign);
注意:requestDTO不能将密码也带过去 我们要做的事情: 拿到对方请求参数:requestDTO
获取sign值和apiKey:
String sign=requestDTO.getSign();
String apiKey=requestDTO.getApiKey();
通过apikey去获得密码secrect,因为apikey和密码是我们提供的,所以肯定知道在哪里获取; 之后请求对象设置sign值为null:
requestDTO.setSign(null);
转成JSON,然后按同样的方式生成sign签名: String reqStr=JSON.toJSONStirng(requestDTO);
StringBuilder sb = new StringBuilder();
sb.append(BeeBoxConstant.SECRET);
sb.append(json);
sb.append(BeeBoxConstant.SECRET);
String sign2 = Md5Util.getMd5(sb.toString());
比较对方传过来的sign值和我们计算得到的sign2是不是一致,一致签名验证就通过,不一致签名就是失败;

接口鉴权,提供给第三方调用的接口,进行sign签名的更多相关文章

  1. EasyNVR摄像机网页H5全平台无插件直播流媒体播放服务二次开发之接口鉴权示例讲解

    背景需求 EasyNVR的使用者应该都清楚的了解到,EasyNVR一个强大的功能就是可以进行全平台的无插件直播.主要原因在于rtsp协议的视频流(默认是需要插件才可以播放的)经由EasyNVR处理可以 ...

  2. 项目API接口鉴权流程总结

    权益需求对接中,公司跟第三方公司合作,有时我们可能作为甲方,提供接口给对方,有时我们也作为乙方,调对方接口,这就需要API使用签名方法(Sign)对接口进行鉴权.每一次请求都需要在请求中包含签名信息, ...

  3. 接口鉴权之sign签名校验与JWT验证

    需求描述: 项目里的几个Webapi接口需要进行鉴权,同接口可被小程序或网页调用,小程序里没有用户登录的概念,网页里有用户登录的概念,对于调用方来源是小程序的情况下进行放权,其他情况下需要有身份验证. ...

  4. laravel JWTAuth实现api接口鉴权(基础篇)

    官网:https://jwt-auth.readthedocs.io 参考:https://learnku.com/articles/10885/full-use-of-jwt#99529f 1.to ...

  5. HiMall 3接口鉴权参考

    签名算法 为了防止API调用过程中被黑客恶意篡改,调用任何一个API都需要携带签名,HOP服务端会根据请求参数,对签名进行验证,签名不合法的请求将会被拒绝.TOP目前支持的签名算法只有一种:MD5(s ...

  6. Ant Design Pro 鉴权/ 权限管理

    https://pro.ant.design/docs/authority-management-cn ant-design-pro 1.0.0 V4 最近需要项目需要用扫码登录,因此就使用antd ...

  7. YAPI接口自动鉴权功能部署详解

    安装准备 以下操作,默认要求自己部署过yapi,最好是部署过yapi二次开发环境. 无论是选择在线安装或者是本地安装,都需要安装client工具. 1.yapi-cli:npm install yap ...

  8. 全栈项目|小书架|微信小程序-登录及token鉴权

    小程序登录 之前也写过微信小程序登录的相关文章: 微信小程序~新版授权用户登录例子 微信小程序-携带Token无感知登录的网络请求方案 微信小程序开通云开发并利用云函数获取Openid 也可以通过官方 ...

  9. 钉钉JSAPI前端鉴权

    钉钉二次开发分为如下表所示三种类型的开发,只有企业内部应用才需要对JSAPI鉴权. 类型 开发方式 JSAPI鉴权 应用场景 第三方企业应用 E应用开发 不需要 用于发布到钉钉应用市场,供广大用户下载 ...

随机推荐

  1. JacaScript实现call apply bind函数

    一.call函数 模拟实现第一步:整体思路 Function.prototype.call2=function(context){ context.fn=this; //1.将函数(谁调用 即this ...

  2. oracle再回首

    第一章 Oracle 数据库的使用   一. 数据库相关概念   1 什么是数据库 所谓的数据库其实就是数据的集合.用户可以对集合中的数据进行新增.查询.更新. 删除等操作.数据库是以一定方式储存在一 ...

  3. go语言开发入门

    go语言开发入门 每个Go程序包含一个名为main的包以及其main函数,在初始化后,程序从main开始执行,避免引入不使用的包(编译不通过) 基础语法 基本数据类型 bool, byte int,i ...

  4. 【译】ASP.NET Core updates in .NET 5 Preview 8

    .NET 5 预览版 8 现在已经可以获取了,并且已经准备好接受评估.下面列出了本次发布的新特性: 使用 Microsoft.Identity.Web 进行 Azure Active Director ...

  5. React技术实践(1)

    随着系统越来越庞大,前端也变得越来越复杂,因此,构建一套组件化的前端变得很重要了. 之前一直在使用Asp.net来进行前端的组件化,Asp.net组件化有个很大的缺陷,就是和后台代码绑定太紧密了,不符 ...

  6. js中使用const声明变量时需要注意

    const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址(初始化的内容)不得改动.对于简单类型的数据(数值.字符串.布尔值),值就保存在变量指向的那个内存地址,因此等同于常量. 简单 ...

  7. 时间选择器 element

    <el-date-picker type="datetime" placeholder="选择上线日期" :picker-options="st ...

  8. JSON<前后端的沟通>

    1.什么是JSON ==>1什么是json json:是一种轻量级数据交互格式 数据交互:每一种语言的编码都不一样,他们之间互不认识.但是现在的情况是不同的语言开发出的系统也需要进行数据交互,这 ...

  9. linux 增加新用户无法使用sudo命令解决办法

    昨天一不小心把自己的系统搞崩了,也没有快照,没法进行还原操作,所以只能重装系统解决了,装完系统以后一切正常,当我新增了一个用户,使用sudo命令切换到root用户时,发现怎么都切换不过去,经过百度发现 ...

  10. Wampserver报错、橙色、mysql打不开

    Wampserver下的几个常见的问题 最近在弄Wampserver,发现有几个问题存留在这里,今天就来解决一下吧 首先就是关于报错的这个一个问题: 第二就是关于一直不变绿的原因 关于报错: 在我的电 ...