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

微服务体系结构——Spring boot——网关

钱选
2023-03-14

我正在开发具有微服务架构的后端。我对该架构不熟悉,目前我在一个容器中开发了3个微服务(RESTful Web服务,带有Spring Boot)。我想实现OAuth2和JWT Rest Prot和网关。使用授权服务器和资源服务器实现网关是正确的吗?我在架构上做错了什么吗?

谢谢你的回复

共有2个答案

薛宇
2023-03-14

身份验证和授权——应该有一个单独的服务来对用户进行身份验证(比如支持OAuth0类型的协议并提供JWT令牌)。你的前端应该调用API网关。

现在的问题是,您维护权限的粒度级别是什么——只有一小部分角色或权限集的粒度级别。现在,API网关应该通过JWT与授权服务器通信,并获得角色和权限集。基于此,API网关应该转发或阻止对Microservice的调用。

即使您有一小部分角色,而且JWT可以由Gateway提取和验证,但也要避免在Gateway保留相同的功能,因为您有可能在不久的将来将功能提取到其他服务。

尉迟栋
2023-03-14

根据标准,不应将网关与授权混合使用,因为两者的目的不同。

网关

网关可以通过两种方式进行区分——内部和外部。网关的作用是将呼叫从外部或内部路由到受保护的资源。

授权服务器

授权服务器用于身份访问管理。所有通过网关来自外部或内部的请求都应在使用JWT或访问令牌等将调用路由到受保护资源之前进行身份验证或授权。

https://medium.com/swlh/authentication-and-authorization-in-microservices-how-to-implement-it-5d01ed683d6f

 类似资料:
  • 我最近开始使用Node.js,我必须构建一个应该使用多个Express.js服务的体系结构。其中一些服务必须位于一台服务器上,另一台则位于其他服务器上。我想构建一个基础服务(像API网关),但是我不知道在这个网关和微服务之间,或者在两个微服务之间进行通信的合适方式是什么。 目前我正在研究一个基于此的解决方案:

  • 我有一个微服务体系结构,它的日志必须发送到远程Kafka主题。在它旁边,本主题的使用者将把日志发送到麋鹿堆栈(另一个团队) 我想要一个专用的微服务(fwk proxy elasticsearch),其职责是收集其他人的日志,并将其发送到远程Kafka主题。 将从我的微服务聚合的所有日志分派到fwk-代理-弹性搜索微服务的最佳协议是什么? 我希望这个模式不会重复远程Kafka主题的安全配置。我想把它

  • 我经常听说,在微服务架构中,对于每一个微服务,我们都必须创建单独的数据库。 但是,如果我必须在不同的数据库中维护外键约束,这是不可能的。就像我在身份验证微服务中有一个用户表,我想在我的目录服务中使用它(用户表中的用户 ID 列) 那么如何解决呢。 感谢提前

  • 创建Eureka发现客户端和服务器架构。在客户端有userInfo服务CRUD opeartion。它在启动时显示错误。错误是创建在类路径资源[org/springFramework/cloud/autoconfiure/ConfigurationProperty tiesRebinderAutoConfiguration.class]中定义的名为“配置属性Beans”的bean的错误:合并bea

  • 总而言之,我们有: 产品类别: 产品ID、产品名称 订单类别: 订单ID、产品ID、用户ID、订单日期 这些方法中的任何一种可以被认为是最佳实践吗?还是有不同的解决方案?

  • 我不清楚如何取回购买服务不保存的数据--例如:用户的全名。当试图通过购买用户名进行更复杂的搜索购买时,问题会变得更严重。 我认为,显然可以通过在两个服务之间同步用户来解决这个问题,方法是在用户创建时广播某种类型的事件(并在购买服务端只保存相关的用户属性)。在我看来,这远非理想。当你有数百万用户时,你如何处理这个问题?您会在每个使用用户数据的服务中创建数百万条记录吗? 另一个明显的选择是在用户服务端