我正在为我的小型服务器客户端程序实现登录/身份验证系统。我想知道如何解决这个问题,我希望一如既往地从 Stack Overflow 获得一些很棒的提示/建议。我想我会这样做。
- 客户端连接到服务器。
- 服务器向客户端发送一个“令牌”(可能基于时间等等)
- 客户端返回用户名和 sha1 加密密码以及令牌。
- 服务器接收它们并根据服务器端数据库中的凭据对用户进行身份验证。
- 令牌现已验证,用户已使用令牌登录。
这完全是一种安全的方式吗?我认为客户端还发送一个串行密钥或类似的密钥以形成串行/令牌对,以便另一个客户端不能伪造相同的令牌(尽管令牌是由服务器端生成的)。
不需要实施细节,因为我有能力进行实施。
我的问题应该是两个问题:
- 有什么方法可以实现带有套接字的登录/认证系统
- 有什么方法可以保护我的客户端到服务器的连接
- 编辑:我忘了问,因为这是一个 C++ 问题,有没有可以帮助加密/身份验证的库?
安全对我来说是一个问题,所以我想确保我做对了。
也许一些背景信息。这是一个游戏服务器,一个人用他的帐户登录并被带到一个“大厅”,在那里他可以选择一个“世界服务器”来玩。世界服务器是一个单独的进程(可能)在同一网络中的不同机器上运行。
出于这个原因,我想在此有一个会话的概念,用户登录并生成一个会话,登录服务器将会话中继到用户选择的世界服务器,以便世界服务器知道用户实际上是登录。
我认为客户端必须确认与世界服务器的会话以及所有这些,但我稍后会担心。
真诚的, 杰西