安全地允许用户授予技术支持访问其帐户的权限

时间:2013-06-06 18:13:06

标签: php session security lamp

我希望允许使用加密密码和基于会话的身份验证的Web应用程序用户授予我们的技术支持团队一段时间访问其帐户的权限,并可选择手动撤消访问权限。有没有一种安全的方法来解决这个问题?

我正在使用LAMP堆栈。

理想情况下,可以手动授予访问权限(例如当用户与我们通话时)或自动授权(例如,当用户通过我们的应用程序或我们的支持论坛中的帖子向我们发送电子邮件时)。

我能想象的一种方法看起来像这样:

  • 用户单击应用程序中的按钮以允许技术支持访问其帐户。
  • 浏览器会向服务器发送一个请求,该请求会将用户的会话标识符,CSRF令牌等存储在我们的支持数据库中。
  • 支持数据库将让支持技术人员找到他们正在与之通话的客户,然后使用相同的会话标识符等登录用户的帐户。
  • 手动撤消访问权限会从支持数据库中删除会话标识符。

但是,它必然会限制技术支持会话长度,这可能不够长 - 特别是在电子邮件支持的情况下。

是否有更好或更标准的方法来解决这个问题?

编辑1:我可以做一些事情,比如生成一个允许技术人员通过后门登录的新令牌,但如果可能的话,我宁愿避免使用后门。

我认为另一种可能性是提供一个只能通过SSH隧道访问服务器的全开后门。仍然是一个后门,但至少在谁可以访问它时非常有限。

1 个答案:

答案 0 :(得分:1)

  

我希望用户[...]暂时授予对其帐户的访问权限,并可选择手动撤销访问权限。

您正在描述委派授权OAuth协议专为此而设计,更安全。

在OAuth 2.0术语中,最终用户是资源所有者,技术支持代表用于访问用户帐户的系统称为客户端。 OAuth为资源所有者提供了一种授予客户端访问资源服务器的资源的方法。在授权过程之后,客户端会收到访问令牌

与客户端访问令牌关联的访问权限具有范围,它定义了客户端对资源所有者(最终用户)资源的访问授权程度。这比分享会话ID的解决方案更安全,因为(1)各方之间没有共享秘密,(2)客户端访问与用户会话无关,以及(3)客户端的访问范围可能受到限制,因此他只有部分访问权限。访问令牌可以随时撤销;也许是资源所有者或过期时间。

您应该阅读OAuth 2.0 specification以了解授权如何被授予以及如何发布和使用访问令牌的技术细节。

相关问题