使用 amazon cognito 域 UI(从用户池生成)登录后未获得 cognito 访问令牌?

Posted

技术标签:

【中文标题】使用 amazon cognito 域 UI(从用户池生成)登录后未获得 cognito 访问令牌?【英文标题】:Not getting cognito Access token after login with amzon cognito domain UI (generated from userpool)? 【发布时间】:2018-03-24 09:01:43 【问题描述】:

身份验证后我没有从 aws cognito 用户池获取访问令牌,我在 web url 中获取代码而不是令牌。

我所做的步骤如下:-

第 1 步:创建用户池并设置所有要求。

第 2 步:在用户池左侧导航栏中添加身份提供者凭据 -> 联合 -> 身份提供者(Facebook、google plus)。

第 3 步:完成属性映射(用户池左侧导航栏 -> 联合 -> 属性映射)。

第 4 步:启用身份提供者并添加回调 URI(用户池左侧导航栏应用集成 -> 应用客户端设置 -> 启用身份提供者)(允许 OAuth 流 -> 授权码授予)

第五步:创建URI域名(用户池左侧导航栏App集成->域名) 并在 Facebook 应用和 google plus 帐户中添加了此域 (https://XXXXXXXXX.auth.us-east-1.amazoncognito.com/oauth2/idpresponse)。

第 6 步:在浏览器中通过 aws 打开托管域 (https://XXXXXXXXX.auth.us-east-1.amazoncognito.com/login?response_type=code&client_id=abcdefghi&redirect_uri=https://abcdefg)

步骤 7:登录到打开的 UI 并使用查询参数中的代码而不是访问令牌重定向到成功登录 我现在如何在我的应用程序中获取访问令牌。

请帮帮我。

【问题讨论】:

【参考方案1】:

Authorization code grant flow 只会向您的应用程序提供授权码。可以使用 Cognito 令牌端点将此代码交换为令牌。

如果您希望将令牌直接发送到您的应用,您应该改用Implicit grant flow。

参考文档:http://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-idp-settings.html

【讨论】:

我还有一个疑问,这里我使用的是用户池,因为在我的应用程序中,用户可以使用 facebook gmail 和 cognito 登录。假设我在 Facebook abc@gmail.com 上拥有相同的 gmail 帐户,并且我在 cognito 上注册了相同的帐户,我创建了一个 lambda 函数,以便我可以控制重复的电子邮件,无论它们来自任何登录过程,每次只有一个有关 abc@gmail.com 的用户池中将有条目,并且该单个条目将适用于所有 cognito gmail 和 facebook。为此,我在我的应用程序上使用域 webview。但我的要求是 ---不同,我在 Ionic 3 上做这个项目,webview 不是最好的选择,我必须创建一些原生的东西,你能一步一步告诉整个过程 对于使用 SDK 的本机应用程序,我试图从很长时间内实现相同但我失败了,每次我创建一个用户池并且联合池在身份验证提供程序中添加用户池 ID 然后当我在那里使用 gmail 或 Facebook 登录时将是来自 gmail 或来自 facebook 登录的身份表中的一个条目,以及来自用户池中 cognito 注册过程的一个条目。现在这里是来自 abc@gmail.com 的 3 个用户,其中一个来自 Gmail、Facebook 和 cognito,但我必须用一个电子邮件 ID 将它们全部映射,我必须如何使用 SDK 对本机应用程序执行此操作???? 或 我如何使用相同的用户池但没有使用原生设计的 webview 请一步一步告诉我。 我遇到了类似的问题,并在***.com/questions/49547452/… 上发布了一个问题。你们中的任何一个都能回答吗? @SaurabhChauhan @mipnw 请查看上面的答案并将允许的 OAuth 流更改为隐式授权。

以上是关于使用 amazon cognito 域 UI(从用户池生成)登录后未获得 cognito 访问令牌?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Cognito:生成令牌并在使用 amazon-cognito-identity-js SDK 刷新后

AWS Amplify 和 amazon-cognito-identity-js 的区别?

推荐邀请使用Amazon Cognito

如何在没有 Amplify 的情况下使用 Amazon Cognito

使用 CognitoUser (npm: amazon-cognito-identity-js) 仅验证“代码”

是否可以使用 Amazon Cognito 组来设置对 AW 资源(例如 Amazon DynamoDB 和 Amazon S3)的权限?