2016-08-07 8 views
-2

Является ли смысл использовать следующий код, чтобы я мог напрямую обращаться к другим инструментам AWS с помощью приложения ios?Точка использования AWS Cognito Identity

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; 
    }]; 

Затем я использую AWS Lambda с помощью API-шлюза, чтобы получить идентификаторы пользователей.

ответ

0

Cognito требуется для обеспечения контекста выполнения (аутентификации) при доступе к ресурсу AWS. Это означает, что ничто не является анонимным для AWS - даже если у вас нет пользователей для входа в систему, у них все еще есть уникальный идентификатор, связанный с их устройством.

Это означает, что какой-то случайный человек за пределами вашего приложения не может просто поразить ваши ресурсы AWS (S3, Lambda и т. Д.) И выполнить код.

Это также означает, что вы можете и должны назначать разрешения на выполнение для вашей Лямбды, чтобы позволить вашей группе Cognito выполнить.

Еще одно замечание: вам не нужно использовать шлюз API для выполнения Lambdas на iOS. Вы можете вызвать изначально. Я предпочитаю делать это так - меньше конфигурации.

http://docs.aws.amazon.com/mobile/sdkforios/developerguide/lambda.html

Надежда, которая отвечает на ваш вопрос.

+0

ЕСЛИ Я прокомментирую это, мои функции шлюза все еще работают. Поэтому, если я попытаюсь получить доступ к чему-либо вне шлюза, например, s3, это не сработает. Правильно? Также используя шлюз для доступа к лямбда, чтобы я мог отправлять вещи https: //. Благодарю. – cdub

+0

Если вы можете получить доступ к своему шлюзу без Cognito, так может и любой другой человек в мире. Вы функциональность широко открыта. Теперь, возможно, вы используете это, чтобы предоставить конечную точку REST для обслуживания активов S3 в Интернете. В этом есть смысл. Кроме того, стоит отметить, что все абонентские вызовы API AWS из iOS переводятся на https-вызовы в API AWS REST. –

+0

Я не знал о местных HTTPS: звонки. Как мне сделать api только для моего пользователя с помощью cognitoId? Благодаря, – cdub

Смежные вопросы