亚马逊Cognito iOS

Ted*_*y13 5 objective-c amazon-web-services ios amazon-cognito

我正在尝试将Amazon Web Services集成到我的应用程序中,但坦率地说,这是一项重大挑战,而且非常烦人.

我正在使用适用于iOS的Amazon SDK(V2.1.0),这正是我想要实现的:

  1. 在我的应用程序中,我有一个注册屏幕,我的用户可以使用Facebook或创建帐户注册我的应用程序
  2. 如果用户希望创建帐户,我计划使用Amazon Cognito安全地访问Amazon DynamoDB(通过iOS应用程序),我将在其中存储电子邮件和密码.

我试图让我的ViewController中的Amazon Cognito使用以下代码,但我对变量cognitoId没有任何结果.我的代码如下:

AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
                                                                                                identityPoolId:@"us-east-1:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX"];
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1
                                                                     credentialsProvider:credentialsProvider];
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;

NSString *cognitoId = credentialsProvider.identityId; //NULL
Run Code Online (Sandbox Code Playgroud)

根据我上面解释的一切,我有以下问题:

  1. 在这种情况下,我的Amazon Cognito用例是否正确?
  2. 为什么上面的代码不起作用?
  3. 我认为该问题可能与身份池中配置的iam角色有关.我不确定在安全方面会给出什么样的角色.用户注册后,应用程序将需要获得写入我的DynamoDB的权限,而不会暴露任何安全漏洞.任何人都可以对此提出任何见解吗?

我感谢任何可以提供帮助的人.在过去的几天里,我试图让它继续工作,我正在失去理智.

谢谢!

Jef*_*ley 1

默认情况下未设置 Cognito 身份 ID。您是否正在调用 getIdentityId 或通过提供程序刷新?如果没有,我会尝试一下,看看是否有结果。

至于您的其他问题,Cognito 支持“公共提供商”,例如 facebook、google 和 amazon,以及开发人员经过身份验证的身份。对于您建议的 facebook 案例,您可以很容易地在那里使用 Cognito。有关 Cognito 角色和策略的博客文章可在此处找到。

开发人员验证的身份可能是实现第二个用例的有效(且更安全)方式。该工作流程需要您有一个后端服务器,但您只能向该服务器授予对 dynamo 数据库表的访问权限。用户登录后,应用程序会将数据发送到您的服务器,该服务器将验证并回复凭证,然后用户就可以访问您的其他 AWS 资源。此处提供了一篇描述此上下文中的角色和策略的博客文章,此处提供了一篇提供有关具体细节的更多详细信息并列出端到端示例的博客文章。