【问题标题】:Amazon Cognito iOS亚马逊认知 iOS
【发布时间】:2015-06-02 05:39:41
【问题描述】:

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

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

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

我试图让 Amazon Cognito 在我的 ViewController 中使用以下代码,但变量 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

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

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

我感谢任何可以提供帮助的人。在过去的几天里,我试图让它发挥作用,这让我失去了理智。

谢谢!

【问题讨论】:

  • 我很想与您谈谈您使用 Cognito 的经历。请给我发电子邮件 - 我的电子邮件在我的 stackoverflow 个人资料页面上。

标签: ios objective-c amazon-web-services amazon-cognito


【解决方案1】:

默认情况下未设置 Cognito 身份 ID。您是调用 getIdentityId 还是使用提供者刷新?如果没有,我会尝试一下,看看是否有结果。

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

经过开发人员验证的身份可能是实施您的第二个用例的一种有效(且更安全)的方式。该工作流程需要您拥有一个后端服务器,但您只能将 dynamo db 表的访问权限授予该服务器。用户登录后,应用程序会将数据发送到您的服务器,该服务器将验证并回复凭证,然后用户可以访问您的其他 AWS 资源。可在 here 获取描述此上下文中的角色和策略的博文,并在 here 获取更详细的细节并列出端到端示例。

【讨论】:

    猜你喜欢
    • 2016-08-24
    • 2015-07-29
    • 2017-09-05
    • 2016-11-26
    • 2012-12-08
    • 2017-11-14
    • 2021-09-02
    • 1970-01-01
    • 2022-12-03
    相关资源
    最近更新 更多