如何使用Perl进行身份验证和会话管理?

时间:2015-03-19 10:48:07

标签: perl session authentication server plack

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

成功进行身份验证后执行安全身份验证和会话管理的基本步骤是什么?

我尝试了以下步骤 -

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

即使存在被动攻击者,密码仍然受到保护。 为了防御主动攻击者(MiTM),您需要更复杂的内容,例如Diffie-Hellman key exchange