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



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

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

我尝试了以下步骤-

1-用户在客户端输入用户名和密码
2-客户端将对凭据进行编码并将其发送到身份验证服务器
3-身份验证服务器将验证身份验证数据库中的用户凭据,并生成带有用户名及其登录类型的会话密钥(Token)
4-在成功身份验证时,此会话密钥(令牌)将被发送回客户端(用户),否则将发送undef,客户端将抛出"无效用户错误"
5-此令牌将与客户端的每个命令一起发送,具有命令定义的服务器(而不是aut服务器)将验证令牌并允许基于验证执行命令
6-现在服务器有用户的登录时间和到期时间(比如2小时),所以身份验证服务器会不断检查用户是否已经过了到期时间,如果是,然后将用户带到登录提示处。

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

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

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

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

这样,即使存在被动攻击者,密码也会受到保护。为了抵御主动攻击者(MiTM),您需要更复杂的东西,如Diffie-Hellman密钥交换。

相关内容

  • 没有找到相关文章

最新更新