没有AWS凭证的Android的AWS Cognito登录

问题描述

我已经使用AWS Cognito对Web应用程序进行身份验证(使用Hosted UI和flask_awscognito)。用户池已经创建,并且所有用户创建或任何其他用户池管理都在应用程序外部完成(例如,直接通过控制台,CloudFormation或类似方法)。现在,我们要通过Android应用对用户进行身份验证,事实证明,很难做到这一点。

所有AWS文档都将您引导至Amplify-问题是Amplify希望您“初始化”,并且在此过程中似乎需要AWS凭证,并且对于具有CloudFormation权限的用户而言,只需简单地不需要任何内容验证用户身份。

是否有(有关任何文档的)简单方法来向Android的认知用户池验证用户身份?这应该类似于Web应用程序的身份验证,区别在于与托管UI的任何交互(如果需要)都必须是编程的,而不是通过重定向到AWS托管登录页面进行。

奇怪的是,从Android到用户池的简单身份验证(没有必需的AWS凭证,或使用通过Amplify创建的用户池)既不简单也不记录。还是我只是找不到它?

解决方法

事实证明,无需Amplify即可从Android进行身份验证。诀窍是利用“深层链接”,其中URL可以定向到设备上的应用程序。我们在配置的用户池回调URL中添加了URL,并配置了Android应用程序来处理该URL。流程如下: 要从该应用登录,该应用将显示托管ui的网络视图,并指定新配置的回调URL。当用户成功通过托管页面登录后,重定向将随新URL返回,并且现在由应用程序接收。我们转而直接请求令牌(而不是找回代码),以避免必须通过协议为令牌交换代码。

这个问题的答案很有帮助: Cognito hosted UI