使用AWS Cognito Developer Identities从我的ios应用程序获取对DynamoDB的完全访问权限

我已经实施了AWS Lambdafunction,并使用网关返回填充数据:

var param = { IdentityPoolId: "actualIdentityPoolId", Logins: {} // To have provider name in a variable }; param.Logins["com.testing.userLogin"] = userId; cognitoidentity.getOpenIdTokenForDeveloperIdentity(param, function(err, data) { if (err) return fn(err); // an error occurred else fn(null, data.IdentityId, data.Token); // successful response }); 

所以身份标识和令牌被发送回ios设备。 在我的设备中,我尝试连接到AWS DynamoDB表,但访问被拒绝。 我如何使用identityId和令牌访问表?

我在IAM中为Unauth设置了angular色,拒绝Dydnamo和Auth,通过它的策略访问表。

我试图执行身份validation使用: http : //docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html

我看到有两个基本和增强的stream程。 该文档说,大多数用户将使用增强stream,并实现GetCredentialForIdentity。

这是如何实现在我的IOS代码,以便我可以将我的angular色从unauth切换到身份validation,并可以访问dynamodb? 这个访问会持续多久? 我想这样做在我的ios代码而不是使用lambda或其他类似的东西。

如果您的用户未经身份validation,则login您需要清除您的凭据,并且您的“login”方法现在应返回正确更新的login映射。

以下是帮助您的文档: http : //docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html

仔细检查您的DynanoDBangular色以进行经过身份validation的访问您的DynamoDB资源。 此示例的angular色位于您引用的开发人员指南的以下页面中 。 该页面被称为“ IAMangular色 ”,最后一部分是重要的一部分:“ 对Amazon DynamoDB的细粒度访问 ”。

坚持您的计划使用增强型Authflow。 build议使用较less的电话进行身份validation(您的用户将会赞赏这一点)。 只要确保你的移动客户端从iOS调用GetCredentialsForIdentity

在这里输入图像说明

从“增强的Authflow”文档进一步浏览您的页面:

您可以在build立身份标识后调用GetCredentialsForIdentity API。 这个API在function上等同于调用GetOpenIdToken和AssumeRoleWithWebIdentity

AssumeRoleWithWebIdentity是允许您的用户承担可以访问DynamoDB资源的angular色的重要部分。 只要您在Cognito控制台中正确设置angular色,Cognito就会负责其他事务:

为了使Amazon Cognito代表您调用AssumeRoleWithWebIdentity,您的身份池必须具有与之关联的IAMangular色。 您可以通过Amazon Cognito控制台或通过SetIdentityPoolRoles操作手动执行此操作(请参阅API参考)