【发布时间】:2018-01-18 21:31:48
【问题描述】:
我在处理控制器中用于检查用户权限的声明时遇到了很多麻烦。
应用结构
我们的后端是 .NET Core,前端是 React,目前我们只允许使用支持 google 的电子邮件使用 google API 登录。我们生成一个 JWT 并将其存储在浏览器的 localStorage 中,然后在每次请求时发送它。此外,没有角色:如果您已登录,那么您就是管理员。
制作应用程序“骨架”的开发人员现已离开,这是我第一次处理安全问题。
新要求
我们现在需要实现角色和权限,似乎 MS 希望为此使用声明。我这样做并将这些声明添加到 jwt,然后在配置上添加策略,它确实有效。如果您有特定的声明,您可以访问特定的控制器或方法,否则服务器会返回 403 错误。
但后来我以实际管理员角色登录,使用 devtools 复制了 localStorage 值,然后以几乎没有权限的用户注销并重新登录。当我粘贴本地存储条目(再次使用 devtools)时,我立即收到了所有声明,并且能够访问管理员可以访问的每个控制器和方法。
似乎正确的方法应该是使用 HttpOnly、安全 cookie,也许将“SameOrigin”设置为 true(不确定这如何影响单点登录),但我不明白 如何 em> 这样做。我看过博客文章,甚至下载了一个应用程序(我无法运行但我将代码复制到我的应用程序),但我一直失败。此外,我不明白在检查控制器策略时是否需要为要使用的 cookie 做任何事情。
谁能帮我解决这个问题?
【问题讨论】:
标签: reactjs cookies asp.net-core jwt