C++ 客户端/服务器应用程序';s的身份验证策略

C++ 客户端/服务器应用程序';s的身份验证策略,c++,security,sockets,authentication,client-server,C++,Security,Sockets,Authentication,Client Server,我正在为一个基本的聊天程序编写一个简单的协议。 我的问题是:一旦客户端通过提供用户名和密码进行身份验证,我是否应该要求客户端在其下面的数据包中提供令牌?或者,将其身份验证状态保存在服务器上的表中,并且在断开连接和重新连接之前,永远不要期望客户端证明它,这样就足够了吗?在客户端提供正确的凭据之后,您不应该要求对任何进一步的消息进行身份验证。如果您怀疑,每条消息都应该包含身份验证信息,在这个实现中,您不需要通过“登录”进行身份验证,只需要在每条消息上请求安全信息 成功登录后,您可能需要用户凭据的唯一

我正在为一个基本的聊天程序编写一个简单的协议。
我的问题是:一旦客户端通过提供用户名和密码进行身份验证,我是否应该要求客户端在其下面的数据包中提供令牌?或者,将其身份验证状态保存在服务器上的表中,并且在断开连接和重新连接之前,永远不要期望客户端证明它,这样就足够了吗?

在客户端提供正确的凭据之后,您不应该要求对任何进一步的消息进行身份验证。如果您怀疑,每条消息都应该包含身份验证信息,在这个实现中,您不需要通过“登录”进行身份验证,只需要在每条消息上请求安全信息

成功登录后,您可能需要用户凭据的唯一情况是更新客户机信息(由客户机本身),其中包括更改密码和其他“用户”信息。启动“更改密码”请求时,您必须请求密码

确保身份验证附加了一些加密,以便任何人都无法截获消息。您还可能有一些密钥(如几个字节的字符串),您可以为每个传入消息进行验证,以确保消息来自正确的客户端(这与您的原始设计一致,而不是我在第一段中给出的备用设计)