【问题标题】:Understanding AWS Cognito usage in iOS apps了解 iOS 应用程序中的 AWS Cognito 使用情况
【发布时间】:2017-01-10 23:07:35
【问题描述】:

我的后端应用服务器(ejabberd,托管在 AWS EC2 上)有自己的用户身份验证过程。我的 iOS 客户端直接与它连接以进行用户登录,但客户端还需要单独访问 S3 存储桶 - 为此我正在尝试利用 AWS Cognito。

如果我在我的应用程序中加入以下推荐的 iOS SDK 代码,我可以让应用程序向 S3 存储桶上传/下载数据/从 S3 存储桶下载数据。文档here ...

AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc]
initWithRegionType:AWSRegionUSEast1 identityPoolId:@"IDENTITY_POOL_ID"];

AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc]
initWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider];

AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;

但是,我的问题是 - 在哪里/如何每隔一小时刷新一次凭据?上面的代码对我来说似乎还不够——身份池实际上是在应用程序中硬编码的,并且可以被反编译它的人检索。我可能在这里错过了一些基本的东西......

感谢您的帮助...

【问题讨论】:

    标签: ios amazon-web-services amazon-s3 ejabberd amazon-cognito


    【解决方案1】:

    身份池 ID 通常嵌入在应用程序中,您不会错过这方面的一步。通过使用您的 auth 和 unauth 角色来严格定义每个用户和用户类型可以执行的操作,可以减轻风险。

    凭据提供程序会自动为您管理凭据。当它们过期时,它将获得新的并使用它们。您所要做的就是将其传递给您的应用当时需要的任何 AWS 客户端。

    【讨论】:

    • 谢谢@Jeff Bailey。那么这是否意味着我需要在我的应用服务器中实现从 AWS 获取身份 ID,然后将其传递回我的移动客户端,该客户端使用它连接到 S3?在我的理解中,我在这里可能又被误解了——我之前假设我的服务器没有任何作用,只有 iOS 客户端需要合并凭据......
    • 如果您使用的是开发人员认证的身份,这只是流程的一部分。如果没有,SDK 也会为您执行此操作。
    • 啊,是的,我是......正如我所暗示的,我的应用服务器负责用户身份验证,所以我有自己的应用特定用户名等。抱歉还有一个问题 - 这是正确的博客让我遵循/实施我提到的流程。我问是因为我找不到 BFTask 并在某处读到它已被弃用......?再次感谢! mobile.awsblog.com/post/Tx1YVAQ4NZKBWF5/…
    • 使用 dev auth,客户端仍应处理 95% 的获取 ID。调用服务器登录将返回它,此时它将继续正常
    • 再次感谢@Jeff Bailey ...非常感谢您的帮助!我会试一试,以防万一没有点击。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2015-01-13
    • 2015-05-29
    • 2016-07-20
    • 1970-01-01
    • 2017-06-21
    • 2016-02-05
    • 2011-08-06
    • 2018-04-12
    相关资源
    最近更新 更多