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

微服务之间的身份验证:亚马逊 API 网关

夏炎彬
2023-03-14

我在AWS上托管了几个微服务(Springdge)。例如,让我们假设Service1和Service2是两个微服务。Service1是前端和移动应用程序访问的微服务。Service1调用Service2。Service2完全是内部的。

我已经设置了位于Service1前面的Amazon API网关。我使用cognito配置了身份验证(Oauth)。

这一切都在起作用。当从前端/应用程序调用时,请求需要在到达Service1之前通过API网关进行身份验证。

但我的问题是,如果Service1需要与Service2通信,考虑到我使用的是AWS,哪种身份验证最合适

>

  • 我可以重新使用API Gateway生成的令牌吗?以便Service1可以在其请求中将其转发到Service2,并以某种方式Service2使用Gateway验证这一点。可能吗?如果是,这是个好主意吗?

    在某些情况下,Service1与Service2通信,而不需要前端/应用程序的请求(cronjob)。在这种情况下,通信不会通过API网关,因此不会生成令牌。我应该如何处理这个案子。

    我不想引入Oauth认证来在两个内部微服务之间进行认证。我觉得有点矫枉过正。有更好的方法吗?

  • 共有2个答案

    苏波涛
    2023-03-14

    Gary提到的2级API是一个好主意。同样,我认为,服务之间的通信应该是安全的。由于其他服务将在锁定的虚拟私有云的un中运行,您可以在服务中使用基本的auth。这就是我们组织的做法。

    闻人高卓
    2023-03-14

    一个很好的选择是有2个级别的API:

    • 入口点API暴露给外部世界并通过OAuth保护
    • 微服务不通过OAuth保护,并在只有入口点API可以调用的锁定的虚拟私有云中运行

    例如:*线上销售UI调用线上销售API *线上销售API调用订单和客户微服务

    来自 OAuth 访问令牌的用户上下文可以从入口点 API 传递到微服务 - 或者可以转发令牌本身

    这也表现良好,避免了对Cognito的过多调用。

     类似资料:
    • 我不太熟悉亚马逊,所以有几个问题: 我想使用我自己的自定义后端解决方案,用Cognito为亚马逊上的用户执行登录。找到了这个可能的解决方案。这个后端为我注册和登录后返回 我想遵循这个指南。但根据这一点,我应该提供和令牌,并将其设置为任何社会的登录后: 作为我使用了在 但我有一个例外,我没有任何提供者 AWSCognitoCreentialsProvider getCreentialsAnd Cog

    • 亚马逊网络服务(AWS)是亚马逊的云网络托管平台,提供灵活,可靠,可扩展,易于使用且经济高效的解决方案。

    • 简而言之,应该在哪里执行输入验证和身份验证验证?在 API 网关和每个微服务中?仅在 API 网关中?仅在每个微服务中? 也许部分在api网关中,部分在每个网关中? 谢谢你的回答!

    • 我正在使用Node JS和Express创建一个微服务架构。我知道微服务的主要特点之一是面向服务的体系结构,团队可以独立设计、开发和发布应用程序。因此,在我的设计中,我认为每个微服务都提供了自己的API,它们通过API相互通信,每个微服务都是独立的,有自己的生命在等待请求。 我写这个问题是因为我对微服务之间的身份验证和通信有几个疑问。 对于自动认证,我用JWT做了一些测试来认证微服务的应用编程接口

    • 我们正在尝试找出IPC身份验证和授权的最佳实践。我会解释的。我们有一个基于微服务的体系结构SaaS和一个专门的认证服务。该服务负责执行身份验证和管理身份验证令牌(JWT)。 现在的问题是如何验证和授权由其他服务发起的请求(没有特定用户的上下文)? 我们是否应该为每个服务生成一个专用用户,并像对待系统中的任何其他用户一样对待它(具有适当的权限)? 我们是否应该在服务之间部署“硬编码”/动态令牌? 还

    • 我正在尝试在一个microservice中配置一个microservice,但我正在尝试在另一个microservice中配置一个microservice如何进行身份验证。这就是我试图归档的体系结构: 我已经设法让用户授权工作并保护了微服务A,现在我正在尝试授权来自微服务B的请求,但我不确定如何做到这一点,我是否应该为微服务B在KeyCape中创建一个专用用户,或者在realm中创建客户端,或者其