如何使用启用的身份提供程序进行身份验证

时间:2018-06-19 20:04:45

标签: aws-api-gateway amazon-cognito openid-connect aws-sdk-net

我正在寻找有关如何扩展现有的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感到困惑在已启用的身份提供程序之一中。

1 个答案:

答案 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,为所有经过身份验证的用户提供令牌处理和管理,因此您的后端系统可以标准化一组用户池令牌。

不幸的是,我不确定代码示例。

希望这会有所帮助。