1、2.3使用限制与约定.33系统总图.34身份认证请求与认证令牌.34.1格式.34.2签名与校验.45身份认证的流程.45.1创建登录通道.45.2生成身份认证请求.45.3用户授权.55.4yy服务器检查请求并签发认证令牌.55.5第三方服务器检查认证令牌.56安全讨论.66.1拦截重放登录令牌.66.2伪造登录令牌.66.3欺诈攻击.66.4拒绝服务攻击.67运维以及游戏附加需求.67.1密钥的生成、更新与管理.67.2多玩通行证到游戏账户的转换.67.3身份证信息.71目标解决问题本设计目标是设计一套安全有效的身份认证系统,用于为第三方合作厂商的游戏和应用提供yy用户的身份认证。通过本协
2、议,用户只需要登录一次yy客户端,则可以快速穿梭于各不同厂商的游戏和应用,无需多次注册,无需记住不同的帐号和密码。这有利于提高用户体验,降低试用门槛。2介绍2.1术语约定用户最终用户,对应地就是使用yy并且尝试通过开放身份认证登录第三方游戏、应用的人第三方指与yy展开合作的游戏、应用厂商第三方服务器指第三方提供登录服务的服务器登录通道指用于第三方客户端与服务器之间,用于yy身份认证的tcp连接。此连接可以与游戏本身的已有tcp连接复用身份认证请求第三方服务器签发的请求,包含了请求方、时间戳等信息认证令牌yy服务器签发的身份认证令牌,包含了用户的yy唯一标识号connid登录通道的id。每次创建
3、登录通道,第三方服务器都要为每条通道捆绑不同的id,此id为一个32位的数字。2.2使用场景描述下面以用户的眼光,描述出一次完整的身份认证过程。yy用户“张三丰”今天入场打开了yy,发现第三方认证的推广,决定尝试一下。经过挑选,他选择了“歪歪世界”这款游戏。下载然后打开“歪歪世界”的客户端,他看到了按钮“以yy身份登录”。他按了一下。这时候yy画中画会在游戏中弹出了一个提示,内容为“以yy身份登录歪歪世界吗?如果不是您本人的操作,请勿确定!”。用户再按了一次确定,稍稍等候了一下,然后他就看到了角色创建画面,后面就开始游戏了。2.3使用限制与约定要使用本协议,第三方客户端与服务器必须能建立tcp
4、长连接从而能绑定connid。本协议只关注身份验证本身,只需要确保在没有用户只许的情况下,他人无法伪造身份登录第三方游戏、应用。身份验证完毕后,第三方游戏、应用的用户安全不在本协议考虑范围。3系统总图4身份认证请求与认证令牌4.1格式第三方服务器签发的“身份认证请求”和yy服务器签发的“认证令牌”都有着类似的格式,这里一并描述。格式上,它们都由若干属性以及值组成的字符串。下面给出一个例子:protocolVer=1,appid=123,timestamp=12312320,connid=1943181,Requireextrainfo=idcardname&idcardinfo,signatu
5、remethod=Rsa-sha1,signature=e20202f31fe58241c1cb676fbb7b6fb17ff2c411123123123123123签名属性永远放在信息的最后,其他属性的顺序没有规定。其中有一些属性名字是预留给协议用的,一定要出现在每条消息中。protocolVer标识协议版本版本号,目前固定为1timestamp时间戳,标识签发本条信息的时间,格式为32位无符号整数,代表从epoch起至今的秒数。signaturemethod签名方法。目前固定为Rsa-sha1Requireextrainfo请求额外信息列表。除了唯一用户标识号,第三方可能还希望能获得额外的
6、一些yy信息,可以通过此属性进行请求,属性之间以&分隔。本次请求的是身份证姓名和身份证号码。signature签名串,hex格式,为加密后的摘要4.2签名与校验签名方法目前固定为Rsa-sha1。签名的生成过程如下:生成除signature外的所有属性,连接成串。对这个信息进行sha1哈希,获得40字节长度的摘要,然后对摘要使用私钥进行Rsa加密。私钥加密长度为1024bit,填充方法为pkcs#1。消息的校验首先校验时间戳然后校验签名。接收方在收到信息后,提取时间,并与当前系统时间进行比较,当绝对差值大于一个设定值(默认5分钟),则认为无效。签名校验流程与签名类似。首先,要获得签名方对应的公钥。对于
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1