我想为我的应用创建一个只能由我的应用访问的API。我已将AWS Cognito标识添加到我的appDelegate,如下所示:
AWSCognitoCredentialsProvider *credentialsProvider = [[DeveloperAuthenticationProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"poolId"];
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider];
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
__block NSString *cognitoId = nil;
// Retrieve your Amazon Cognito ID
[[credentialsProvider getIdentityId] continueWithBlock:^id(AWSTask *task)
{
if (task.error)
{
NSLog(@"Error: %@", task.error);
}
else
{
// the task result will contain the identity id
cognitoId = task.result;
}
return nil;
}];
如何使用返回的gonitoId以确保这是唯一具有可以访问我的API的ID的应用?我是否需要保存此ID并在访问api时使用它?
感谢。
答案 0 :(得分:0)
使用'AWS_IAM'授权保护API将要求使用同一AWS账户中的凭据签署请求。过去,如果您控制了帐户,那么您应该能够通过使用API网关操作和资源设置细粒度策略来确保只有Cognito角色可以访问。
应用程序应在验证时接收Cognito凭据,以便您在API Gateway SDK中使用。生成的SDK在iOS Android和JavaScript中可用。
http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-generate-sdk.html