如何保护Angular 6-Spring Boot微服务应用程序

时间:2018-10-12 07:19:39

标签: angular spring-boot spring-security jwt spring-security-oauth2

我想讨论一下我重新编写现有应用程序的尝试,并想知道使应用程序更安全的建议。

我们有一个银行应用程序,而不是面向客户的应用程序,供银行员工管理互联网银行用户和系统。它称为管理门户。 目前它是用java,jetspeed框架编写的。我想用Angular 6和spring boot micro服务架构来重新编写它。

熟悉弹簧靴和弹簧架,但不确定安全部件。由于它是银行应用程序,因此我们必须更加重视安全性。 我们正在使用MySQl作为数据库。

在这种情况下,任何人都可以分享JWT和OAuth 2之间最好的安全方法是什么?春季安全性如何实施?

1 个答案:

答案 0 :(得分:1)

我开发了两个家庭银行应用程序,并为身份验证/授权部分提供了两个选择:AD,然后选择第一个

JWT更易于管理,安全并且不需要OAuth2即可损害应用程序的可扩展性(您还必须扩展此服务)

对于JWT,方法有两种,我选择了第二种:

  1. 您可以编写身份验证微服务以生成和解码令牌(并且作为OAuth服务可能会遇到可伸缩性问题)

  2. 您可以编写逻辑以在Authorization Server应用程序中生成JWT令牌,而所有其他JWT必须具有安全性才能对令牌进行解码。

使用第二种方法,每个微服务都知道该令牌是否具有角色(因为角色是在令牌本身中编码的),并且授权非常精细。另一种方法是在Gateway(s)层上放置授权,但是我认为它将变得非常复杂。

在角度方面,您只需实现以令牌作为响应的登录即可。在Microservices标头中的每个请求中设置令牌。
在站点导航中,您可以隐式调用一个针对已定义令牌的调用,仅当用户(令牌)具有该Gateway

时,服务器才会检索用户Authorization并路由到特定页面

此外,如果我以某种方式入侵JS(使用缩小/混淆可能非常困难),我将能够在未经授权的页面中路由前端应用程序,但服务器端调用将失败并且ROLES将设置为空页面。

此外,在家庭银行业务应用程序中,您可以跨设备使用操作或将OTP身份验证用于操作条款