我想允许具有 bcrypted 密码和基于会话的身份验证的 Web 应用程序的用户能够授予我们的技术支持团队一段时间访问他们的帐户的权限,并可以选择手动撤销访问权限。有没有一种安全的方法来解决这个问题?
我正在使用 LAMP 堆栈。
理想情况下,可以手动授予访问权限(例如当用户与我们通电话时)或自动授予访问权限(例如当用户通过我们的应用程序向我们发送电子邮件或在我们的支持论坛中发帖时)。
我可以想象的一种方法如下所示:
- 用户单击应用程序中的按钮以允许技术支持访问他们的帐户。
- 浏览器会向服务器发送一个请求,服务器会将用户的会话标识符、CSRF 令牌等存储在我们的支持数据库中。
- 支持数据库将让支持技术人员找到他们正在与之交谈的客户,然后使用相同的会话标识符等登录到用户的帐户。
- 手动撤销访问将从支持数据库中删除会话标识符。
但是,它必然将技术支持限制在会话长度上,这可能不够长——尤其是在电子邮件支持的情况下。
有没有更好或更标准的方法来解决这个问题?
编辑 1:我可以做一些事情,比如生成一个新令牌,允许技术人员通过后门登录,但如果可能的话,我更愿意避免使用后门。
我想另一种可能性是提供一个开放的后门,该后门只能通过 SSH 隧道访问服务器。仍然是一个后门,但至少在谁可以访问它方面非常有限。