1

我正在尝试创建命令行界面,我需要在其中使用 perl(在 Perl 中使用来自 Plack 的 Starman )在用户(客户端)和身份验证服务器之间执行身份验证和会话管理。

在成功认证后执行安全认证和会话管理的基本步骤应该是什么?

我尝试了以下步骤 -

1- 用户在客户端输入他的用户名和密码
2- 客户端将对凭据进行编码并将其发送到身份验证服务器
3- 身份验证服务器将验证来自 auth-database 的用户凭据并生成使用用户名加盐的会话密钥(令牌)及其登录类型
4- 成功验证后,此会话密钥(令牌)将被发送回客户端(用户),否则将发送 undef 并且客户端将抛出“无效用户错误”
5-此令牌将随每个发送来自客户端的命令和具有命令定义的服务器(不是 aut-server)将验证令牌并允许基于验证执行命令
6-现在服务器有用户的登录时间和到期时间(比如2小时),所以auth服务器会继续检查用户是否已经过了到期时间,如果是,那么将用户带到登录提示符。

请就上述实施提供您的反馈和建议。

4

1 回答 1

1

听起来不错。如果客户端可以与服务器建立持久的双向连接,它就不必一直发送会话令牌,只有在建立连接时才发送。

此外,无论何时使用令牌,都应将到期时间向后推。

如果服务器和客户端之间的连接是未加密的,则服务器应该在开始时(在第 1 步之后)发送一个 nonce,并且客户端也会生成一个 nonce。客户端创建(密码、服务器随机数、客户端随机数)的哈希,并将哈希与客户端随机数一起发送到服务器。

这样,即使有被动攻击者,密码仍然受到保护。为了防止主动攻击者 (MiTM),您需要更复杂的东西,例如Diffie-Hellman 密钥交换

于 2015-03-19T13:55:53.577 回答