2017-08-29 75 views
1

我的程序是一个TCP套接字服务器,它应该通过命令 - 应答系统在网络上进行管理。命令(请求)-answer系统不是问题:客户端发送数据包,服务器接收数据包并生成响应。数据包只是一个字节序列。
问题是我必须创建一个简单的帐户系统。我的服务器应该存储和管理两种账户类型:“管理员”和“简单用户”。所以我应该有这样的东西:注册,认证和密码存储系统。这可以简单地在Qt5上完成?例如,我只能通过网络发送用户名和密码(或密码哈希),但是如何以正常方式在服务器上初始创建管理员帐户?我没有严格的安全要求,但我想创建一个合理的系统。简单的账户控制系统

+0

不确定Qt部分,但您如何计划跟踪会话?正在使用HTTP一个选项?这将简化登录和会话处理。如果没有,我会建议你看看其他会话实现(也许生成令牌认证连接...)。身份验证本身可以是[基于nonce的](https://en.wikipedia.org/wiki/Challenge-response_authentication) – urban

+1

最简单的方式:管理员凭证应通过服务器端的某个配置文件进行预定义。作为额外的保护,您可能会强制用户在首次登录时更改密码。另一种方式:许多CMS为首次登录的用户提供完整访问权限和安装步骤。顺便说一句,你的问题与Qt无关:) –

+0

@DmitrySazonov谢谢,非常好的主意!你可以写这个答案,我会接受它)。这是本地网络中几台台式电脑之间的系统。现在,我要将系统作为预定义的配置文件+强制管理员在首次登录时更改密码。但也许只是在电脑上的配置文件就足够了。 –

回答

1

最简单的方法:管理员凭证应通过服务器端的某个配置文件进行预定义。作为额外的保护,您可能会强制用户在首次登录时更改密码。另一种方式:许多CMS为首次登录的用户提供完整访问权限和安装步骤。

-1

使用QSslSocket获取安全通信层(http://doc.qt.io/qt-5/qsslsocket.html),因为您将在此管理链接上交换密码。

这里有代码的客户端部分,与QT5的例子:http://doc.qt.io/qt-5/qtnetwork-securesocketclient-example.html

在服务器端,接受预定义的未使用的端口上的插座,竭诚为您服务。

现在,您可以简单地决定使用随机秘密密码进行的登录,该密码将对应于管理员帐户,并创建一个程序在基于QSslSocket的安全通道上发送此密码。在接受远程管理之前,服务器必须检查密码。

因此,如您所见,必须在使用服务之前创建管理员。您可以使用基于某些加密手段(OpenPGP,S/MIME等)的私人邮件交换为管理员提供密码。

+1

没有答案。 “如何创建管理员帐户?” - >“使用QSslSocket”。 –

+0

问题标签是:qtcpsocket。问题后的通知是关于安全的:“[...]我没有严格的安全要求,但我想创建一个合理的系统。” =>我的回答是“使用QSslSocket” –