我的iOS应用程序的一部分需要将用户的电子邮件地址保存在中央数据库中。我选择使用Amazon DynamoDB。我不需要每个应用程序用户拥有自己的凭据,我只想为应用程序本身提供一个用户名/密码来写回数据库。
使用亚马逊示例代码,我把它放在app delegate:
中AWSCognitoCredentialsProvider *credentialsProvider = [AWSCognitoCredentialsProvider credentialsWithRegionType:CognitoRegionType
identityPoolId:CognitoIdentityPoolId];
AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:DefaultServiceRegionType
credentialsProvider:credentialsProvider];
[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;
在IAM管理器中创建完全访问角色,然后使用以下代码写入数据库:
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
AWSDynamoDBObjectMapper *dynamoDBObjectMapper = [AWSDynamoDBObjectMapper defaultDynamoDBObjectMapper];
NSString *uuid = [[NSUUID UUID] UUIDString];
NSString *emailAddress = ([self.emailAddress.text length]>0)?self.emailAddress.text:@"a@b.com";
EaSLIEmailList *emailListItem = [EaSLIEmailList new];
emailListItem.UUID = uuid;
emailListItem.EmailAddress = emailAddress;
NSMutableArray *tasks = [NSMutableArray array];
[tasks addObject:[dynamoDBObjectMapper save:emailListItem]];
[[BFTask taskForCompletionOfAllTasks:tasks]
continueWithExecutor:[BFExecutor mainThreadExecutor] withBlock:^id(BFTask *task) {
if (task.error) {
NSLog(@"Error: [%@]", task.error);
}
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
return nil;
}];
这绝对没问题,但我不确定这是否安全。我想我应该创建一个用户和密码来嵌入应用程序。
我很感激任何人对最佳和最简单的方法的指导。
(我担心的是,如果我不这样做,那么有人可以在不通过应用程序的情况下访问数据库。)
答案 0 :(得分:0)
您的后端可以致电AWS Security Token Service生成临时凭据,然后将其传递给移动设备。可以为这些凭据分配仅对DynamoDB中的特定项目的权限(因此,即使凭据被泄露,它们也不会泄露任何其他数据)。