像 Auth0 和 Cognito 这样的身份提供商如何验证从前端到后端的请求?

问题描述 投票:0回答:1

我有一个应用程序,它是一个 Angular Web 应用程序,它调用 Java 中的后端 API。

我喜欢使用 Auth0 或 Cognito 等第三方服务,唯一的问题是,我很难理解它们如何工作的整体架构。我已阅读文档但找不到答案。

我特别想知道的是这个。

我的应用程序是否需要在身份验证后针对每个用户请求向 Auth0/Cognito 发出请求?

我知道有一个身份验证部分,我的应用程序重定向到 Auth0/Cognito,用户可以在其中登录。而且我知道,登录完成后,我可以从 Auth0/Cognito 获取某种形式的访问代码。

好的,身份验证已完成,我的用户需要使用我的应用程序的前端与我的应用程序的后端进行交互。问题是,前端是否需要发送他们在身份验证后获得的任何代码,相反,我的后端现在需要调用 Auth0/Cognito 来验证他们从前端获得的内容吗?我是否需要对每个请求执行此操作(如果我想信任前端发送的内容,看起来我必须这样做)

如果我需要在每个请求上检查 Auth0,这不会影响性能吗?因为我的应用程序基本上会在每次请求时跨网络边界向外部系统发出请求?

authentication oauth authorization amazon-cognito auth0
1个回答
0
投票

我可以解释在 Auth0 的情况下这是如何发生的,但 Cognito 不会有太大不同。

首先,您的前端和后端应用程序都必须正确配置才能与 Auth0 平台通信。

用户身份验证后,您的前端会收到一个 ID 令牌和一个访问令牌。 ID 令牌证明用户身份验证,并且可以选择包含用户配置文件数据。访问令牌授权您的前端应用程序调用您的后端。它采用 JWT 格式,还可以包含特定权限。从前端到受保护后端的所有请求都必须包含访问令牌。

您的后端第一次收到来自前端的请求时,它会联系 Auth0 以检索并缓存签名公钥和其他数据。需要这个东西来验证从前端接收到的访问令牌。

从现在开始,您的后端不需要再次联系Auth0(直到缓存过期或配置级别发生变化)。所有后续请求都可以使用缓存的内容在本地进行验证。

我希望这有助于深入了解该行为。

© www.soinside.com 2019 - 2024. All rights reserved.