博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多服务器的用户身份认证方案
阅读量:4135 次
发布时间:2019-05-25

本文共 910 字,大约阅读时间需要 3 分钟。

当游戏服务器群达到一定规模后,让用户只从一个入口连入会给这个入口带来很大的压力。这样,我们就需要让服务器群中的多台机器都允许用户直接连接。

当服务器开放给用户直接登陆后,必须面临的一个问题就是用户身份认证的问题。

大多数提供网络服务的公司都做了一套统一的用户认证系统,比如微软的 passport ,网易的通行证,等等。为了避免重复验证用户身份而给用户认证系统带来过大的负担,云风在这里给出一个参考解决方案。

登陆服务器可以只有一台,专门用于用户第一次登陆的身份认证。它认证完用户的身份后,则发放一个游戏系统内部用的临时通行证给用户,用户可以拿着这个临时通行证到指定的地点玩游戏。

我们需要讨论的是,以上流程中的安全问题,以及如何加强安全性。

用户认证过程自然不能传送用户密码的全部信息,这跟密码是否加密无关。简单的安全措施是先由登陆服务器发送一个随机串给用户,用户把这个字符串同自己的密码连接起来,并 md5 以后传回服务器做验证。(这里用 md5 指代一种特定的不可逆 hash 算法)

临时通行证的生成可以是这样:登陆服务器从数据库中取得用户所属的服务器 id (通常是他最后一次登陆的位置,或者游戏逻辑认为他所在位置)、用户的游戏 id (往往不同于他的用户名)、一个约定字符串、一个顺序版本号、一些随机字节、把它们连在作一次 des 加密(这里用 des 指代一种特定的可逆密匙加密算法)。每生成一次临时通行证,版本号递增。加密临时通行证的密码由登陆服务器与每个可以接受用户直接连接的服务器约定,永远不传送给用户。

用户拿到这个临时通行证后,可以用之一次性登陆指定服务器。直到从服务器正常登出,若需切入新服务器,可由老服务器生成下一份临时通行证。临时通行证由于被服务器加密,所以对用户来说是一串无意义字符串,故而无法伪造。

临时通行证传送给用户时,可用用户自己的密码之 md5 值(或者连接一个约定串增加安全性)做密匙加密。这样不知道密匙的人截获数据包也不能获得临时身份证。而临时身份证总是一次有效,且只针对特定服务器(服务器会检查临时通行证中包含的版本号、服务器 id ),企图用临时身份证多次登陆也会失败。 

转载地址:http://wjavi.baihongyu.com/

你可能感兴趣的文章
php程序员看过来,这老外是在吐糟你吗?看看你中了几点!
查看>>
为什么说程序员是“培训班出来的”就是鄙视呢?
查看>>
码农吐糟同事:写代码低调点不行么?空格回车键与你有仇吗?
查看>>
阿里p8程序员四年提交6000次代码的确有功,但一次错误让人唏嘘!
查看>>
一道技术问题引起的遐想,最后得出结论技术的本质是多么的朴实!
查看>>
985硕士:非科班自学编程感觉还不如培训班出来的,硕士白读了?
查看>>
你准备写代码到多少岁?程序员们是这么回答的!
查看>>
码农:和产品对一天需求,产品经理的需求是对完了,可我代码呢?
查看>>
程序员过年回家该怎么给亲戚朋友解释自己的职业?
查看>>
技术架构师的日常工作是什么?网友:搭框架,写公共方法?
查看>>
第四章 微信飞机大战
查看>>
九度:题目1008:最短路径问题
查看>>
九度Online Judge
查看>>
九度:题目1027:欧拉回路
查看>>
九度:题目1012:畅通工程
查看>>
九度:题目1017:还是畅通工程
查看>>
九度:题目1034:寻找大富翁
查看>>
第六章 背包问题——01背包
查看>>
第七章 背包问题——完全背包
查看>>
51nod 分类
查看>>