AWS Application Load Balancer正向路由丢失请求参数

时间:2019-12-30 12:46:20

标签: amazon-cognito aws-application-load-balancer aws-alb

我有一个AWS Application Load Balancer,可根据路径将请求转发到两个微服务。我遇到的问题是其中一种微服务使用的AWS Cognito。用户进行身份验证时,将使用诸如令牌之类的参数向负载均衡器发送请求。负载均衡器使用转发操作将此路由到相关的微服务。但是,由于身份验证参数在转发过程中丢失,因此转发进入无限循环。

端口443上的路径转发:

/microservice1Path/* -> forward to microservice1 on port 80 /oauth2/* -> forward to microservice1 on port 80 everything else -> forward to microservice2 on port 80

以下步骤在无限循环发生之前发生:

  1. 用户导航到https:// microservice1Path /,它触发在microservice1中配置的认知模式。
  2. 客户成功登录
  3. cognito对http s :// oauth2 / code / cognito?code = xxx&state = yyy
  4. 进行回调
  5. 由于转发规则/ oauth2 / *,负载均衡器转发到http:// oauth2 / code / cognito(请注意协议和参数丢失)
  6. 负载均衡器重定向到https:// oauth2 / code / cognito(使用规则从http重定向到https)
  7. Microservice1没有看到身份验证参数,并再次触发了认知过程,从而创建了无限循环

我尝试删除/ oauth2 / *上的转发规则,但这导致负载均衡器转发到microservice2而不是停留在microservice1上

我还没有尝试直接从负载均衡器(ALB)设置cognito,因为我想将其保留在microservice1中。但如果没有其他办法,我可以尝试一下。但是,我发现奇怪的是,前向操作会丢失查询字符串/请求参数。可能会破坏其他功能。

我希望ALB保留请求参数,这应该可以解决问题。只有我不知道该怎么做。

0 个答案:

没有答案