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

Posted

技术标签:

【中文标题】如何保护 Angular 6 - Spring Boot 微服务应用程序 [关闭]【英文标题】:How to secure Angular 6 - Spring boot micro service application [closed] 【发布时间】:2019-03-17 09:03:55 【问题描述】:

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

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

熟悉弹簧靴和弹簧座,但不确定安全部分。由于它是一个银行应用程序,我们必须更加认真地对待安全部分。 我们使用 mysql 作为数据库。

在这种情况下,谁能分享 JWT 和 OAuth 2 中最好的安全方法是什么?如何使用 Spring Security 实现?

【问题讨论】:

【参考方案1】:

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

JWT 更易于管理且更安全,并且不需要可能影响应用程序可扩展性的Authorization Server(您还必须扩展此服务)

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

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

    您可以编写逻辑在您的Gateway(s) 应用程序中生成JWT 令牌,而所有其他Microservices 必须具有安全部分来解码令牌。

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

在角度方面,您只需使用令牌作为响应来实现登录。在 Authorization 标头中的每个请求中设置令牌。 并且站点导航您可以为已定义的令牌执行调用,服务器将检索用户 ROLES 并仅在用户(令牌)具有该 ROLES 时路由到特定页面

此外,如果我以某种方式破解 JS(使用缩小/混淆可能会非常困难),我将能够在未经授权的页面中路由前端应用程序,但服务器端调用将失败,lamer 将出现空白页。

此外,在家庭银行应用程序中,您可以使用跨设备操作或使用 OTP 身份验证进行操作规定

【讨论】:

以上是关于如何保护 Angular 6 - Spring Boot 微服务应用程序 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何保护 Angular 和 Spring 应用程序

Spring Security 和 Angular 6 HTTPS 请求

Grails、Spring Security 和 Angular JS - 如何保护 URL?

如何保护 Angular.js 或 Ember.js 的 Spring RESTful Web 服务

如何使用 Keycloak 保护 Angular 8 前端和使用网关、eureka 的 Java Spring Cloud 微服务后端

如何使用 Spring Boot 保护单页应用程序