Angular 5中的JWT授权

时间:2018-04-12 09:46:40

标签: angular authentication authorization jwt

我试图实施JWT身份验证和授权,但是我担心JWT在前端部分被篡改。我现在后端工作顺利,安全。现在我在Angular 5中实现了JWT授权和身份验证。我是初学者,实现JWT令牌,所以请耐心等待,希望你们能够对此有所了解。

我知道无论何时篡改令牌,JWT都会因签名而失效。然后后端将拒绝处理请求,但假设前端中存在以下情况:

1 - Evil用户使用普通帐户登录并从后端接收JWT令牌。

2 - 邪恶的用户通过添加额外的" admin"来篡改JWT令牌。有效负载的角色(这使jwt无效)

3 - 邪恶用户尝试访问持有被篡改的JWT令牌的受保护路由

4 - 路线保护检查令牌是否过期(通过检查有效载荷中的过期索赔?)

5 - 用户决定再次篡改JWT以增加JWT到期声明(根据后端,JWT令牌仍然无效)

6 - 路由解码JWT并发现JWT未过期且用户具有管理员角色并且允许访问恶意用户的页面并查看呈现的HTML(后端操作是安全的,因为令牌首先得到验证)

我错过了什么吗?我怎样才能防止这种情况发生?我想阻止用户访问该页面,即使它是半工作的。

1 个答案:

答案 0 :(得分:1)

我认为你做对了。

为避免此类问题,您可以做的是在用户首次进入管理模块时发出请求,以检查令牌是否有效。如果没有,则断开连接或重定向。

Secodn选项是让它流动,并实现HTTP拦截器。用户将能够看到后台的HTML,但他最终必须提出请求。在这种情况下,您可以使拦截器重定向403错误,这意味着您的用户将永远无法访问您的后端数据。

最后,您还可以在应用程序启动时将令牌的初始值存储起来,并在用户进入管理模块时检查值是否已更改。

如果值已更改,则用户使用其令牌进行播放,您只需重定向即可。