从未经授权的客户端保护Angular / Spring REST Web服务的安全

时间:2018-08-13 10:33:34

标签: angular rest spring-mvc security

我们正在使用Angular和Spring开发应用程序。我们从后端公开了一些REST Web服务。

我知道强烈建议REST Web服务应该是无状态和无会话的,因此我们正在开发无状态和无会话的Web服务。

我们如何保护Web服务免遭未经授权的客户端调用。因此,我希望仅从Angular应用程序中调用这些服务。

我知道阻止来自Selenium之类的工具的调用几乎是不可能的,但是没关系,因为客户端也是Angular应用。

1 个答案:

答案 0 :(得分:1)

  1. 使用Spring Security开发新的身份验证端点。成功通过身份验证后,返回一个JWT令牌,其主体包含通用数据,以喂入Angular应用程序(例如用户名,用户个人资料等,但不提供密码)。您可能希望将令牌保留在SessionStorage / LocalStorage中,以在Angular组件/路由之间共享。 (或与通用服务共享)
  2. 从Angular到服务器的每个调用都需要在上一步中将JWT令牌作为Authorization标头发送。在Angular中,您可以使用HttpInterceptor来实现这种共享逻辑,而不是将其全部放置在Angular服务层中。

    您的后端必须检查每个JWT令牌的存在 单个请求(Spring安全过滤器),使用JWTUtil(io.jsonwebtoken)java验证令牌头和签名 库同时提取JWT主体以了解哪个用户正在请求 数据,也许只是根据用户的角色(授权)返回相关数据