2015-03-19 88 views
1

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

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

我尝试以下步骤: -

1-用户输入他在客户端的用户名和密码
2-客户端将编码的凭证,并将其发送到认证服务器
3-认证服务器将验证auth-database中的用户凭证并生成用用户名和其登录类型腌制的会话密钥(令牌)
4-成功认证时,此会话密钥(令牌)将被发送回客户端(用户),否则将undef将发送和客户端将抛出 '无效的用户错误或'
5-这个令牌将与客户端的每个命令一起发送,并且具有命令定义的服务器(不是自动服务器)将验证令牌并允许基于验证的命令执行6-现在,服务器具有用户的登录时间和到期时间(比如说2小时),auth服务器将会持续检查用户是否已经超过了过期时间,如果是的话,然后将用户带到登录提示符。

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

回答

1

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

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

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

即使存在被动攻击者,密码仍保护着。 为了防止主动攻击者(MiTM),您需要更复杂的东西,例如Diffie-Hellman key exchange

相关问题