web应用显然混淆了身份验证凭据

2024-04-26 13:56:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我构建了这个内部的web应用程序(构建在烧瓶上,并与Gunicorn一起使用),很久以来它从未存储过任何类型的用户数据或会话数据,而且运行良好。现在,我添加了一个身份验证页面,使用我的组织的LDAP用户输入用户名和密码(与他们在机器上登录时使用的相同),应用程序验证LDAP服务器上的凭据,如果所有内容都匹配,则允许用户通过。你知道吗

当我只使用一个进程(gunicorn -w 1)为应用程序提供服务时,它可以正常工作。但是当我使用多个进程来服务应用程序时,我会得到不稳定的行为!有时,即使用户名和密码正确,身份验证也会失败。有时,如果一个用户进行了身份验证,那么其他用户将被视为已验证。有时用户会验证并使用该应用程序一段时间,但随后单击某个内容并被重定向到登录页(所有函数都会被修饰以检查用户是否通过了验证)。你知道吗

我的猜测是,我没有正确地隔离用户-用户X输入正确的用户名和密码,但当单击“提交”时,应用程序认为是用户Y,他没有通过身份验证,因此拒绝访问(下面是身份验证的逻辑:我检查flask.session是否有密钥user;如果有,用户通过;如果没有,用户通过重定向到登录页,如果身份验证成功,我将用户名存储在flask.session["user"])。你知道吗

如何调试?如果我的猜测是正确的,那么我如何确保用户的凭据不会混淆呢?你知道吗


Tags: 数据用户身份验证web应用程序密码flask内容
1条回答
网友
1楼 · 发布于 2024-04-26 13:56:17

我注意到session对象没有持久化(没有明显的原因,它一直变空)。我搜索了一下发现了这个answer。原来我的应用程序的密钥不应该是随机的(它是os.urandom(24)),而是一个常量字符串。一旦我确定身份验证工作正常。你知道吗

相关问题 更多 >