从 Cognito 的托管 UI 登录时,收到 401 错误

0

【以下的问题经过翻译处理】 谢谢你的帮助。

如果您知道以下事件,请告诉我,我将不胜感激。

【问题】

在Cognito 和 ALB 集成环境下,为什么我从 Cognito 托管 的UI 登录时,会收到 401 Authorization Required 错误?

【具体情况】

我们已经按照以下博客中的过程验证了 Cognito 和 ALB 之间的集成。 [1]

[1] 在 EC2 ,ALB和开发者集成的内容交付环境中,添加了 Cognito 身份验证。

https://dev.classmethod.jp/articles/cognito-alb-secret/

程序本身运行是正常的,但有个个人担忧。

也就是说,如果我从 Cognito 的托管 UI 登录而不是访问 ALB 的域名,会有什么行为?

实际上,我在 Cognito 中创建了一个用户,并从 Cognito 控制台点击了“查看托管 UI”按钮。

出现登录页面,所以我以 Cognito 用户身份登录并更改了密码。

但是,密码更改后出现的屏幕仅显示 401 Authorization Required。

之后,我尝试直接访问ALB域名,能够正确显示ALB后面的EC2运行的页面。因此确认在访问ALB 域中时,不会发生这种情况,而只会在从 Cognito 托管 UI 访问时发生。

[关于附件]

・401 授权请求截屏

在此处输入图片描述

・用于Cognito 托管 UI 页面的按钮

在此处输入图片描述

・允许的回调 URL 在此处输入图片描述

如能对上述问题给予指导,我们将不胜感激。

profile picture
EXPERTE
gefragt vor 5 Monaten46 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 根据以下文档 [1],在对网站进行身份验证时的身份验证流程中,Application Load Balancer 期望用户首先访问负载均衡器。 ALB 身份验证通过在侦听器规则中定义身份验证操作。 将检查传入请求中是否存在会话 cookie,然后检查它是否有效。如果会话 cookie 已设置且有效,则 ALB 会将设置X-AMZN-OIDC-* 的标头,然后将请求路由到目标组。请求标头中包含 JSON Web 令牌 (JWT) 格式的身份信息,后端可以使用该格式来识别用户。如果请求会话中cookie 未设置或无效,则 ALB 将遵循 OIDC 协议并向身份提供者发出 HTTP 302 重定向。此时将遵循身份验证流程,会话 cookie 将会更新为新的身份验证信息。

您还可以查看以下博客文章 [2],以更详细地了解 Application Load Balancer 身份验证的工作原理。

回答您的问题“也就是说,如果我采用 Cognito 的托管 UI 登录而不是访问 ALB 的域名,会怎么样?”,因为客户端最初没有尝试访问您的网站,负载均衡器不知道客户端正试图访问负载均衡器的后端,请求被视为非预期请求。负载均衡器“oauth2/idpresponse”端点的存在是为了处理与 Cognito 令牌端点的授权代码交换,并在 完成Cognito 和负载均衡器之间的通信后,向客户端返回转发的原始 URI。

[1] 使用 Application Load Balancer 对用户进行身份验证 - 身份验证流程 - https://docs.aws.amazon.com/elasticloadbalancing/latest/application/listener-authenticate-users.html#authentication-flow

[2] 使用 Application Load Balancer 内置身份验证简化登录 - https://aws.amazon.com/blogs/aws/built-in-authentication-in-alb/

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen