单页应用上基于声明的授权

时间:2018-07-05 16:09:51

标签: authorization jwt single-page-application claims-based-identity

我在基于角色/权限的PHP“经典”应用程序方面拥有丰富的经验,最近我开始使用React和.NET Core后端开发单页应用程序。我在理解基于声明的访问控制的工作原理时遇到了麻烦,尤其是在考虑javascript客户端时。

根据此帖子(Role-based access control (RBAC) vs. Claims-based access control (CBAC) in ASP.NET MVC),接受的答案描述了声明具有类似权限的作用(例如q=CanCreateCustomer)。从后端看来这是可以理解的,但是我不确定如何将其应用于客户端。

据我所知,声明存储在JWT令牌中,客户端可以根据用户声明对令牌进行解码,并在页面上显示/隐藏元素(例如,客户端将对JWT令牌进行解码,如果{ {1}}声明不可用,该页面上不会显示“创建客户”按钮。

但是,使用这种方法,客户可能会在JWT令牌中存储数百个权限/声明。我看到两个问题:

  1. JWT令牌的大小将增加。令牌中的索偿数量是否有限制?
  2. 客户端可以篡改JWT令牌,并可能查看他们不应使用的链接/页面。当然,如果服务器正确处理授权,他们将无法实际查看任何数据,但是它可能会暴露网站的某些内部工作/管理功能。对于单页面应用程序,这似乎是不可避免的,但也许我是错误的。

我正在寻求澄清以上问题,或者我是否正以正确的方式进行处理。也许我误会了基于声明的访问控制的工作原理。

0 个答案:

没有答案