创建私有Amazon API网关

时间:2016-08-11 08:03:58

标签: ios amazon-web-services amazon-iam amazon-cognito aws-api-gateway

我想为我的应用创建一个只能由我的应用访问的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时使用它?

感谢。

1 个答案:

答案 0 :(得分:0)

使用'AWS_IAM'授权保护API将要求使用同一AWS账户中的凭据签署请求。过去,如果您控制了帐户,那么您应该能够通过使用API​​网关操作和资源设置细粒度策略来确保只有Cognito角色可以访问。

http://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html#api-gateway-calling-api-permissions

应用程序应在验证时接收Cognito凭据,以便您在API Gateway SDK中使用。生成的SDK在iOS Android和JavaScript中可用。

http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-generate-sdk.html