我有一个带有 Firebase 身份验证的应用程序。现在我有一个问题,任何拥有有效 jwt 的用户都可以访问任何其他用户的数据。
例如,我可以使用有效的 jwt 向我的端点之一(即“照片/用户/{id}”)发出请求,并通过将任何 {id} 传递到端点,我将收到该用户的数据。在我的例子中,我们通过系统内部的电子邮件来识别用户。而且我可以成功地从 token 中检索用户的电子邮件。但主要问题是——我现在是否需要将从 token 接收的电子邮件传递给每项服务,这样我就可以检查它实际上是 token 所有者试图访问他的数据,而不是其他拥有有效 token 的人。到目前为止,我已经尝试为授权属性创建自定义策略,但要处理的情况太多,我想它最终会非常脆弱
最佳答案
您应该将端点更改为 photos/user
并将 token 传递给 header 中的操作。
然后您可以使用 token 从 token 中检索正确的用户并返回通过 token 验证的用户的详细信息,同样可以应用于任何其他端点,不要传入用户 ID但使用 token 从身份验证 token 中获取用户 ID
关于c# - 使用 jwt 验证后验证用户操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57723853/