【发布时间】:2019-03-11 06:15:42
【问题描述】:
在我们的网站上,管理员应该能够以用户(客户端)的身份查看网站。我计划为此使用 Auth0,只是注意到他们的模拟功能已被弃用。
我可以强制 Redux 中的一些登录标志以允许管理员以用户身份查看,但是,为了从 API 获取任何用户数据,我从登录期间 Auth0 生成的访问令牌中获取用户 ID。因此 API 只会从当前登录用户的访问令牌中获取数据。
有没有人知道有什么方法可以冒充这个用户?我认为我通过从访问令牌解析用户 ID 以获取该用户的任何数据,对我的 API 实施了限制,如果我错了,请纠正我。
我能想到的唯一方法是,如果管理员“查看”用户,它可以在 API 调用中传递用户的 ID。在控制器中,我可以检查用户 ID 字段是否存在并使用它而不是当前登录的用户,但我认为传递用户 ID 不是一个好主意。也许我可以在每个请求上添加一个中间件,如果 API 调用中存在该用户 ID,我可以检查该用户的角色以确保它是验证请求的管理员。
你怎么看?对这种方法还有其他想法/批评吗?
谢谢!!
【问题讨论】:
-
我想补充一下,如果您遇到了需要传递 UserId 的限制,您可以安全地使用 md5(sha1(userId)) 之类的东西对其进行哈希处理,以便普通人获胜不要读它。您可以在查询中使用它,例如 SELECT * FROM user WHERE MD5(SHA1(userId)) = ?。它很安全,对我有用。
标签: reactjs api access-token auth0 impersonation