我的本地网络上有一个Flask应用程序,它连接到邮件服务器和Web服务。这三个都使用相同的LDAP身份验证源,我希望每次应用程序连接到其中一个接口时都要求用户提供相同的凭据。
在会话生命周期内保存用户凭据的最安全方法是什么,以便与其他接口共享?
我发现的一个选项是Flask-KVSession,它存储会话变量服务器端。
更新:在测试中,我尝试在用户登录时将凭据放入app.config
的dict中。看起来这应该是一个坏主意,但我没有我们还没弄清楚原因。我知道它可以使活动会话的凭据消失,但很容易看出它们是否存在,如果不存在则再次提示它们。另外,它们不会被写入文件系统,就像服务器端会话中的变量一样。
我想知道我是否错过了这种方法的任何明显问题。
答案 0 :(得分:12)
我肯定会使用像Flask-KVSession
这样的东西来存储服务器端会话中的用户凭据(+1为此 - 之前我没有看到过该扩展)。这将确保您不会在cookie中来回传递用户的凭据。我会添加Flask-Login
来处理会话管理中更有趣的部分,而不必亲自发现所有问题。
将凭据放入app.config
不是一个好主意,因为app.config
不是LocalProxy
,因此不是线程安全的。我们无法保证您针对一个请求对app.config
所做的更改不会影响其他请求。 (您可以阅读有关上下文本地here和here)的更多信息。