【问题标题】:How to do authentication and session management using Perl?如何使用 Perl 进行身份验证和会话管理?
【发布时间】:2015-05-22 10:42:11
【问题描述】:

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

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

我尝试了以下步骤 -

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

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

【问题讨论】:

    标签: perl session authentication server plack


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      • 2011-08-03
      • 1970-01-01
      • 2021-10-11
      相关资源
      最近更新 更多