我正在寻找有关如何扩展现有的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
不为null,则我们不参加比赛了,我可以在随后的对AWS API Gateway端点的调用中使用context.AuthenticationResult.IdToken作为OAuthBearerToken,由相同的Cognito用户池。
所有功能都很好,但是现在我们尝试启用其他身份提供程序(首先从Auth0开始),而我现在对于如何获取API网关将从Cognito识别给用户的IdToken感到困惑在已启用的身份提供程序之一中。
答案 0 :(得分:0)
我尚未使用AWS用户池。但是我浏览了一些文档,我相信这些文档可以为您解决问题。
问:所有功能都很好,但现在我们正在尝试启用其他身份提供商(首先从Auth0开始)
A:
首先,Common Amazon Cognito Scenarios重点介绍了如何使用AWS coginito的不同方案。我希望您仔细阅读并理解它们。
您可以找到Authenticate with a User Pool。
您的应用程序用户可以直接通过用户池登录,也可以通过第三方身份提供商(IdP)联合身份。
如果您访问Amazon Cognito User Pools,也会看到它们突出显示相同的内容,
使用Facebook,Google和Amazon登录进行社交登录,以及使用用户池中的SAML身份提供程序登录。
现在,您需要为联盟配置OpenID Connect提供程序(如您所说的Auth0)。
根据文档,可以为各种第三方登录配置用户池。这在Adding User Pool Sign-in Through a Third Party中突出显示。
对于与OpenID Connect相关的配置,可以通过Adding OIDC Identity Providers to a User Pool部分找到文档。最后,可以在OIDC User Pool IdP Authentication Flow处找到流程及其背后的内容。
问:我现在不知道如何获取API网关可以从Cognito识别的IdToken
A:
关于令牌,在此流程中,AWS用户池充当依赖方。因此,OpenID Connect提供程序(例如:OAuth0)向AWS发行令牌。获取并验证令牌后,您的应用程序将从AWS接收标准令牌,就像您通过SRP身份验证获得的一样。突出显示如下,
Amazon Cognito借助内置的托管Web UI,为所有经过身份验证的用户提供令牌处理和管理,因此您的后端系统可以标准化一组用户池令牌。
不幸的是,我不确定代码示例。
希望这会有所帮助。