spring-boot - 微服务之间的认证 : Amazon API Gateway

标签 spring-boot authentication oauth-2.0 microservices aws-api-gateway

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

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

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

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

  • 我可以重复使用 API Gateway 生成的 token 吗?这样 Service1 可以在其请求中将其转发给 Service2,并且 Service2 以某种方式使用网关验证这一点。是否可以?如果是,这是个好主意吗?
  • 在某些情况下,Service1 在没有来自前端/应用程序的请求(cronjob)的情况下与 Service2 通信。在这种情况下,通信不会通过 API 网关,因此不会生成 token 。我该如何处理案件。

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

    最佳答案

    一种行之有效的选择是拥有 2 级 API:

  • 入口点 API 向外界公开并通过 OAuth
  • 保护
  • 微服务不受 OAuth 保护,并且在锁定的虚拟私有(private)云中运行,只有入口点 API 可以调用

  • 例如:
    * Online Sales UI 调用 Online Sales API
    * 在线销售 API 调用订单和客户微服务

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

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

    关于spring-boot - 微服务之间的认证 : Amazon API Gateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59292149/

    相关文章:

    spring - 如何在 Spring Boot 中添加 thymeleaf 方言?

    javascript - Nodejs多重认证

    javascript - 使用 AJAX/jQuery 在网络摄像机上进行 HTTP 基本授权

    javascript - 对于 S3 静态站点前端和 EC2 API 后端,我的 OAuth2 重定向 URL 应该是什么?

    php - 服务应用程序和 Google Analytics API V3 : Server-to-server OAuth2 authentication?

    spring-boot - 配置 spring-boot-starter-oauth2-client 以使用 Azure AD 进行身份验证

    java - Spring boot Web服务/微服务和调度

    java - Spring Boot 电子邮件发送抛出 SocketTimeoutException : Read timed out

    java - Spring Boot MVC 测试 - MockMvc 始终为空

    python - 什么是 post_form_id? (使用Python urllib2)