aws-api-gateway - 如何使用启用的身份提供程序进行身份验证
问题描述
我正在寻找有关如何扩展我们现有的 Cognito 身份验证流程以包含其他“启用的身份提供者”的文档。
目前我们执行以下操作
var userPool = new CognitoUserPool(poolId, clientId, provider);
var user = new CognitoUser(username, clientId, userPool, provider);
var context = await user.StartWithSrpAuthAsync(new InitiateSrpAuthRequest { Password = string.IsNullOrEmpty(temppassword) ? password : temppassword });
如果结果context.AuthenticationResult
不为空,那么我们将参加比赛,我可以在随后调用 AWS API Gateway 端点时使用 context.AuthenticationResult.IdToken 作为 OAuthBearerToken,这些端点受同一个 Cognito 用户池的保护。
所有这一切都很好,但现在我们正在尝试启用其他身份提供者(首先从 Auth0 开始),我现在不知道如何获取 API 网关将从 Cognito 识别的 IdToken,对于在启用的身份提供者之一。
解决方案
我没有在 AWS 用户池上工作。但是我浏览了一些文件,我相信这些文件可以解决您的问题。
问:一切都很好,但现在我们正在尝试启用其他身份提供者(首先从 Auth0 开始)
A :
首先,Common Amazon Cognito Scenarios重点介绍了有关如何使用 AWS coginito 的不同场景。我更喜欢你经历它并理解它们。
在那里你可以找到Authenticate with a User Pool。
您的应用用户可以直接通过用户池登录,也可以通过第三方身份提供商 (IdP) 联合登录。
此外,如果您访问Amazon Cognito 用户池,您会看到它们突出显示相同的内容,
使用 Facebook、Google 和 Login with Amazon 进行社交登录,以及使用用户池中的 SAML 身份提供商登录。
您现在需要配置您的 OpenID Connect 提供程序(如您所说的 Auth0)以进行联合。
根据文档,可以为各种第三方登录配置用户池。这在通过第三方添加用户池登录中突出显示。
对于 OpenID Connect 相关配置,可以通过将 OIDC 身份提供者添加到用户池部分找到文档。最后,可以在OIDC 用户池 IdP 身份验证流程中找到流程和幕后操作。
问:我现在不知道如何从 Cognito 获取 API 网关可以识别的 IdToken
A:
关于令牌,在这个流程中,AWS 用户池充当依赖方。因此 OpenID Connect 提供商(例如:- OAuth0)向 AWS 发出令牌。获得并验证令牌后,您的应用程序将从 AWS 接收标准令牌,就像您通过 SRP 身份验证获得的一样。这突出显示如下,
借助内置的托管 Web UI,Amazon Cognito 为所有经过身份验证的用户提供令牌处理和管理,因此您的后端系统可以对一组用户池令牌进行标准化。
不幸的是,我不确定代码示例。
希望这有帮助。
推荐阅读
- powershell - 带过滤器的 Get-ChildItem 返回匹配但包含一些不匹配的文件
- java - 将字符串值解析为整数时出错
- azure-devops - 将 Azure DevOps Wiki 作为独立静态站点发布
- javascript - Reactjs 在 componentDidMount 上异步获取数据
- java - 使用尤里卡的 Spring Cloud Gateway 自动路由
- r - 如何替换 R 方程中的变量名?
- node.js - 使用nodejs从sharepoint自动下载文件
- python - Django - 收到错误时表单不显示在 HTML 中
- java - Java中的优先级队列(最小堆)排序
- python-3.x - 合并后如何获取全文文件?