客户端 JWT 基于角色的授权
Posted
技术标签:
【中文标题】客户端 JWT 基于角色的授权【英文标题】:Client-side JWT role-based authorization 【发布时间】:2017-06-24 03:44:05 【问题描述】:我了解 JWT 可以包含一些有关要在服务器上验证的用户角色的信息,例如在scope
中,这样非角色用户将无法从受该角色保护的某些端点访问数据。
"iss": "http://issuer.com",
"exp": 1300819380,
"scopes": ["customer", "supplier", "seller"],
"sub": "user@issuer.com"
所以数据是安全的。但假设我有一个仪表板,我想阻止用户查看其功能。
考虑到 JWT 可以被客户端篡改,您如何在 SPA 中保护此类页面?
【问题讨论】:
【参考方案1】:如您所述,客户端代码可能会被篡改,因此对于限制用户访问的逻辑来说,它不是一个安全的地方。
假设仪表板的功能实际上是 API 提供的功能(例如,查看通过 GET 请求检索到的数据,或通过 POST、PUT、DELETE 请求操作数据),您可以改为保护这些 API 端点。因此,即使恶意用户篡改了客户端代码,他们也不会获取或更改任何受保护的数据。
但是对于您关于如何保护 SPA 中的页面的具体问题,没有这样的方法。即使代码被混淆了,它仍然可以让老练的用户任意剖析和更改。
【讨论】:
感谢您的建议。实际上,我提到的仪表板的功能是在单页应用程序中加载的,并且独立于 API 数据。我也想保护这些功能。我知道一个老练的攻击者可以绕过我采取的任何客户端措施,但我正在寻找一种可以防止其他 99% 的设置。以上是关于客户端 JWT 基于角色的授权的主要内容,如果未能解决你的问题,请参考以下文章
在基于 Web 浏览器的客户端上存储授权(或 JWT)令牌的位置?