AWS API 网关和 Spring 引导自定义授权

AWS API Gateway and Spring boot custom authorization

我目前正在从事一个需要自定义身份验证过程的项目。 此应用程序将部署在 AWS 平台上,我正在考虑使用以下 AWS 服务,如

  1. API 网关
  2. 自定义授权
  3. EKS

计划将所有后端服务部署在docker个容器中,并使用EKS服务进行容器编排过程。 所有输入请求都将通过 API 网关进行验证,并路由到相应的后端服务。
我们将通过以下可能的步骤使用自定义授权流程:

  1. 我们的应用程序(比如 CHILD-APP)将与现有应用程序(比如 PARENT-APP)集成,其中 PARENT-APP 将负责用户身份验证。
  2. 用户认证成功后,PARENT-APP会向CHILD-APP请求访问令牌(JWT Token)。
  3. CHILD-APP 用户界面将使用此访问令牌进行后端请求调用。
  4. 我们正在使用自定义访问令牌验证流程来检查令牌完整性、用户名验证和其他附加验证(由于合规性,无法公开)。
  5. 目前我正在使用 Spring 引导 API 网关进行 URL 路由和访问令牌验证。
  6. 也使用自定义 Spring Cloud Eureka 服务器来注册服务。

问题:

  1. 如何使用 AWS API 网关进行此类自定义身份验证和授权过程?
  2. 我可以将 Spring Cloud Eureka 服务器和自定义授权与 AWS API 网关一起使用吗?

感谢任何与此相关的帮助。

谢谢,

阿维纳什

您似乎正在寻找 AWS Lambda 授权器:https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html 这些是 lambda 函数,可用于在网关级别授权访问您的 API。

在 Curity,我们最近创建了这样一个授权方,它向授权服务器执行内省请求,以将不透明令牌交换为 JWT:https://github.com/curityio/aws-phantom-token-lambda-authorizer 看来您需要类似的东西。您的授权方可以调用父应用程序,它将对令牌执行所有自定义验证并 return 一个正确的结果,然后 AWS Lambda 授权方将使用它来做出授权决定。