您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

App Sign(签名)认证-token签名认证

时间:2019-07-25 10:39:55  来源:  作者:
App Sign(签名)认证-token签名认证

 

最近在搞音视频聊天的项目,为了保证服务器的安全以及在以后授权给第三方使用时避免被其他人盗用AppID进行项目开发。

主要流程:

(1)业务服务器根据appid,app sign以及其他字段生成token,例如,go 语言 login_token 生成示例代码如下

func makeTokenSample(appid uint32, app_sign string, idname string, expired_add int64) (ret string, err error){
 nonce := UniqueId()
 expired := time.Now().Unix() + expired_add //单位:秒
 app_sign = strings.Replace(app_sign, "0x","",-1)
 app_sign = strings.Replace(app_sign, ",", "", -1)
 if len(app_sign) < 32 {
 return "", fmt.Errorf("app_key wrong")
 }
 app_sign_32 := app_sign[0:32]
 source := fmt.Sprintf("%d%s%s%s%d",appid,app_sign_32,idname,nonce,expired)
 sum := GetMd5String(source)
 token := tokenInfo{}
 token.Ver = 1
 token.Hash = sum
 token.Nonce = nonce
 token.Expired = expired
 buf, err := json.Marshal(token)
 if err != nil {
 return "", err
 }
 encodeString := base64.StdEncoding.EncodeToString(buf)
 return encodeString, nil
}

(2)客户端去服务器端请求到token

(3)然后使用该token去主服务器进行登录认证,在登录的时候记得附带token和appid;

(4)主服务器根据appid查询到相应的App sign,并且解码

base64.URLEncoding.DecodeString(token),得到nonce和expired的元素,比如

{"ver":1,"hash":"f925e8b0e70d7d7b3006e5226d471e02","nonce":"3576fa6e5000003","expired":1553247969}

hash部分就是我们要匹对的字符串,在主服务器端根据appid,app sign,nonce和expired重新生成Hash2

app_sign_32 := app_sign[0:32]
 source := fmt.Sprintf("%d%s%s%s%d",appid,app_sign_32,idname,nonce,expired)
 hash2:= GetMd5String(source)

匹对hash2和hash则成功则签名认证成功,特别要注意的是app sign一定不要泄露给别人,只要第三方拿到你的签名,那也是一样可以生成鉴权通过的token

鉴权成功后,expired用确定token的过期时间,如果过期则需要使用新的token进行验证。



Tags:App 签名认证   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
最近在搞音视频聊天的项目,为了保证服务器的安全以及在以后授权给第三方使用时避免被其他人盗用AppID进行项目开发。主要流程:(1)业务服务器根据appid,app sign以及其他字段生成...【详细内容】
2019-07-25  Tags: App 签名认证  点击:(418)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(9)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(21)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(17)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条