【发布时间】:2014-08-07 19:18:13
【问题描述】:
所以,我用客户端和服务器制作了一个基于节俭的程序,客户端可以与服务器进行良好的通信。现在,由于数据传输非常重要,我希望它具有某种安全性。
所以,我想到了登录系统,但问题是我没有在服务器端存储任何类型的会话数据(我什至不知道,我应该存储什么,毕竟客户端请求来来去去。无法区分它们)。想了很久,终于想到了这个
- 使用随机数,我会在服务器启动时生成某种随机字符串
- 客户端将输入用户名和密码,这将在服务器端使用 PAM 身份验证进行验证(只需阅读相关内容)。
- 如果验证通过,服务器只会将随机生成的字符串发送到客户端
- 客户端每次尝试执行 RPC 时都会将该字符串发送到服务器
- 如果验证通过,服务器将执行该工作,否则返回一些错误代码
我能想到的可能问题
目前,当服务器宕机,客户端正在进行一些 RPC 时,它会给出一些错误消息,当服务器重新启动时,我们可以毫无问题地完成任务
现在,如果服务器宕机,那么生成的字符串会有所不同。所以我将再次进行身份验证部分
那么,您如何看待整个身份验证架构?有没有更好或更简单的方法?
P.S:我没有使用任何类型的数据库。我在两边都使用 C++。我的客户端使用 QT
【问题讨论】:
-
"现在,如果服务器出现故障,那么生成的字符串将不同。所以我将再次进行身份验证部分" - 当然,如果服务器再也不会出现,您将不得不寻找另一台服务器。问题出在哪里?
-
重新认证整个事情会使事情变得复杂。再加上我试图采用的东西是否可以被认为是好的。然而,SSL 似乎是一个很好地集成在 thrift 中的解决方案。所以最好使用它,而不是重新发明整个轮子:)
-
看看我的回答ssl-certificate-not-authenticating-via-thrift-but-ok-via-browser,它详细说明如何为 Thrift 设置 SSL 相互身份验证。
标签: c++ security authentication rpc thrift