当前位置: 首页 > 知识库问答 >
问题:

使用Spring Security保护REST微服务

翟冷勋
2023-03-14

我正在寻找一个最佳实践和高效的解决方案,以确保通过REST与Web客户端应用程序通信的多个微服务的安全。

当前设置:

这些微服务是用Java制作的,带有Spring框架,并运行在Docker容器中。

客户端是一个Angular 2应用程序。

我创建了一个新的µ服务,它将充当“网关”,是我的web客户端和其他服务之间的唯一通信点。

我从远程身份验证API检索JWT加密令牌(让我们称之为LOCK)

我想的解决方案是:

我可以将登录JWT存储到cookie中,并将其发送到网关。

网关在发送给相关µ的最终有效负载中嵌入令牌,并在用户是新用户时将其存储到数据库中。

然后,微服务获取查询,在远程身份验证服务中检查用户角色,如果足够,它将返回200状态和结果。

编辑

我们需要在µServices配置单元中有一个RabbitMQ代理,这样才能使用WebSocket。为了像保护REST API一样保护WebSocket,我不确定我们是否仍然应该在网关中管理安全性,或者在微服务级别单独管理它。因为大量的消息将被传输,我们也许应该去掉一个中间件,它会减慢传输速度。

问题:

这是个好习惯吗?还有什么可以做得更好?你有没有什么能满足同样需求的例子?非常感谢你的分享

共有2个答案

龚国源
2023-03-14

此外,您可能必须在微服务之间建立信任。您可以使用以下组合:

  • 使用LDAP/OAuth2令牌
  • 使用IP白名单
  • CORS规则
  • Https
孔征
2023-03-14

我会通过以下方式做到这一点:

考虑到每个微服务都在apigateway的后面,即使是身份验证/授权微服务-

一旦请求到来,apigateway将与auth服务进行检查,auth服务将执行其所需的操作,以验证令牌和请求者是否合法,并使用200/401(/403)回复apigateway。

如果apigw获得200,它会将请求转发到该endpoint上的任何微服务,否则会返回其他状态。

如果我们考虑这种情况,并且通过apigateway进入您的环境的唯一切入点,我看不出您有任何理由保护其他服务之间的通信

让我们考虑一下这个场景:

<代码>客户端-

  1. 在客户端和apigw之间,我们有一个安全通话,因为显然我们将使用一个证书。。。因此,客户端将调用https://..../api/v1/cars

当然,您可以强制执行这一点,即用户可以访问的唯一用户信息是他自己的,等等,但这些都是自定义的启发性信息。

 类似资料:
  • 问题内容: 该问题在某种程度上与以下链接的问题有关。但是,我需要在某些方面和一些其他信息上多一点清晰度。 我需要使用令牌为REST Web服务实现安全性 该Web服务旨在与Java客户端一起使用。因此,表单身份验证和凭据弹出窗口没有用。 我是REST安全和加密的新手 这是我到目前为止所了解的: 对于第一个请求: 用户建立https连接(或容器使用301确保https) 用户POST输入用户名和密码

  • 如何使用Spring Boot保护REST服务(OAuth)? 我能得到的最接近的是:http://spring.io/guides/gs/securing-web/http://spring.io/guides/gs/authenticating-ldap/

  • 这个问题在某种程度上与下面的链接问题有关。然而,我需要在某些方面更多的澄清和一些额外的信息。参考:REST Web服务身份验证令牌实现 背景: null null 对于后续请求: 客户端发送此加密令牌和哈希组合(使用基本的用户名字段?) 我们使用哈希确保加密的令牌没有被篡改,然后对其解密 我们检查会话跟踪表中解密的令牌是否有未过期的条目,并获得实际的用户名(过期由代码管理?) 如果找到用户名,则根

  • 我有两个微服务,它们应该相互通信。我的例子是:微服务A向微服务B发出请求。用户不应该有访问权限,只能访问其他微服务。我想,那个解决方案可能是“Http基本身份验证”,所以microservice A还应该向microservice B发送用户名和密码。这很好,但microservice A应该如何找到用户名和密码呢?我正在使用Eureka作为发现服务,但在这种情况下,我没有找到任何可以帮助我的。我

  • 本文向大家介绍如何使用SpringSecurity保护程序安全,包括了如何使用SpringSecurity保护程序安全的使用技巧和注意事项,需要的朋友参考一下 首先,引入依赖: 引入此依赖之后,你的web程序将拥有以下功能: 所有请求路径都需要认证 不需要特定的角色和权限 没有登录页面,使用HTTP基本身份认证 只有一个用户,名称为user 配置SpringSecurity springsecur

  • 在生产环境中部署Hyperledger Composer REST服务器时,应将REST服务器配置为使用HTTPS和TLS(传输层安全性)进行保护。一旦REST服务器配置了HTTPS和TLS,在REST服务器和所有REST客户端之间传输的所有数据都将被加密。 您必须提供证书和私钥对才能配置REST服务器。REST服务器包含可用于轻松起步的示例证书和私钥对,但是此配置仅建议在初始开发期间使用。不要在