Oauth 2.0 具有oauth2和spring安全性的AWS api网关

Oauth 2.0 具有oauth2和spring安全性的AWS api网关,oauth-2.0,microservices,aws-api-gateway,amazon-cognito,spring-security-oauth2,Oauth 2.0,Microservices,Aws Api Gateway,Amazon Cognito,Spring Security Oauth2,我前面有aws api网关。通过api网关将http端点定向到ALB(应用程序负载平衡器)的直通。。和ECS fargate作为ALB目标群。我在spring boot中开发了3个微服务 现在我想为我的RESTAPI集成oauth2和spring安全性。如何将其与aws api网关集成?我没有使用lambda,也不想使用aws cognito 什么是体系结构以及如何将aouth2与多个微服务集成?不确定您是否询问如何使用spring security保护您的微服务,或者(如果您已经配置了spri

我前面有aws api网关。通过api网关将http端点定向到ALB(应用程序负载平衡器)的直通。。和ECS fargate作为ALB目标群。我在spring boot中开发了3个微服务

现在我想为我的RESTAPI集成oauth2和spring安全性。如何将其与aws api网关集成?我没有使用lambda,也不想使用aws cognito


什么是体系结构以及如何将aouth2与多个微服务集成?

不确定您是否询问如何使用spring security保护您的微服务,或者(如果您已经配置了spring security),然后如何配置AWS API网关以在调用微服务之前使用spring security验证请求。但我会尝试在下面的简短回答中涵盖这两个方面

为了保护AWS API网关端点的安全,您需要使用AWS Lambda Authorizer来实现您的目标。这是您需要的文档()。您不必使用AWS Cognito来实现API网关安全性。您创建的Lambda授权器可以基于您已经在微服务中实现的任何库、框架或模型对请求进行身份验证

在我的回答中,我做出以下假设:

  • 我假设您已经配置了SpringSecurity来保护您的微服务(如果没有,这个链接提供了一个很好的教程来说明如何做到这一点)
  • 在这里,我还假设您成功地从Spring Security生成了OAuth令牌,并且您的API客户机正在将其作为承载令牌发送到授权头中
  • 简而言之,使用Java创建一个Lambda授权程序(请遵循第一个链接中的教程) 其思想是指定包含OAuth承载令牌的HTTP头(通常是“授权”头)。然后配置API网关端点,将此头传递给Lambda授权者。一旦Lambda Authorizer函数接收到报头,它就可以使用Spring安全库来验证承载令牌(参见上面关于如何实现这一点的第二个链接)。 如果已成功验证承载令牌,则Lambda授权者的输出必须是一个策略文档(请参阅此链接),该文档告诉API网关是允许请求还是拒绝请求

    从体系结构的角度来看,将微服务实现为单个Lambda函数(如果可能的话),然后使用上面描述的API网关Lambda Authorizer来保护它们,这要干净得多


    我希望这能为您提供一些前进方向的指导。

    您的回答非常清楚,为我解决架构问题提供了一个方向。非常感谢。