使用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参考)