Создание временных учетных данных с помощью AssumeRole api AWS iOS sdk

Я новичок в AWS iOS SDK. Я пытаюсь сгенерировать временные учетные данные безопасности, используя API "assumeRole" из приложения для iPhone. Я добавил в свой проект фреймворки AWSSecurityTokenService, AWSRuntime. Ниже приведен код.

#import <AWSSecurityTokenService/AWSSecurityTokenService.h>
#import <AWSSecurityTokenService/SecurityTokenServiceAssumeRoleRequest.h>
#import <AWSSecurityTokenService/SecurityTokenServiceAssumeRoleResponse.h>
#import <AWSSecurityTokenService/AmazonSecurityTokenServiceClient.h>

- (void)viewDidLoad
{
    [super viewDidLoad];
    TSC = [[AmazonSecurityTokenServiceClient alloc]init];
    request = [[SecurityTokenServiceAssumeRoleRequest alloc]init];
    request.roleArn = @"arn:aws:iam::xxxxxxxxxx:role/test";
    request.roleSessionName = @"Bob";
    request.policy = @"None";
    request.durationSeconds=[NSNumber numberWithInt:3600];
    request.externalId=@"abc";

    //[self assumeRole:request];
    @try {
        response =  [TSC assumeRole:request];
        NSLog(@"%@ is response",response);
    }
    @catch (AmazonClientException *exception) {
        NSLog(@" \n\n\nexception %@ \n\n\n", exception);
    }
    @finally {
        NSLog(@"Done");
    }    
}

Я получил сообщение об ошибке и исключение ниже. Любая помощь будет оценена по достоинству.

objc[1938]: класс AXEmojiUtilities реализован как в /Applications/Xcode5-DP.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/System/Library/PrivateFrameworks/AccessibilityUtilities. .framework/AccessibilityUtilities и /Applications/Xcode5-DP.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDK/iPhoneSimulator7.0.sdk/usr/lib/libAXSpeechManager.dylib. Один из двух будет использован. Какой из них не определено. 17:16:51.807 AssumeRoleTest[1938:3207] Ошибка HTTP-загрузки NSURLConnection/CFURLConnection (kCFStreamErrorDomainSSL, -9807) 17 января 2013 г. 17:16:51.810 AssumeRoleTest[1938:c07]
исключение AmazonServiceException { RequestId:(null), ErrorCode:(null), Message:Error Domain=NSURLErrorDomain Code=-1202 «Сертификат для этого сервера недействителен. Возможно, вы подключаетесь к серверу, выдающему себя за «sts.amazonaws.com» что может поставить под угрозу вашу конфиденциальную информацию». UserInfo=0xa381cb0 {NSErrorFailingURLStringKey=https://sts.amazonaws.com/, NSLocalizedRecoverySuggestion=Вы хотите подключиться на сервер?, NSErrorFailingURLKey=https://sts.amazonaws.com/, NSLocalizedDescription=Сертификат для этот сервер недействителен. Возможно, вы подключаетесь к серверу, выдающему себя за «sts.amazonaws.com», что может подвергнуть риску вашу конфиденциальную информацию., NSUunderlyingError=0x8a64a70 «Сертификат для этого сервера недействителен. выдавая себя за «sts.amazonaws.com», что может подвергнуть риску вашу конфиденциальную информацию.", NSURLErrorFailingURLPeerTrustErrorKey=}

  1. Еще один вопрос. Как указать детали политики в запросе? Я имею в виду, могу ли я напрямую вставить формат json?

    { "Утверждение": [ { "Эффект": "Разрешить", "Действие": [ "s3:Put*", "s3:Get*" ], "Ресурс": [ "*" ] } ] }


person iOS    schedule 18.10.2013    source источник


Ответы (1)


Я являюсь одним из сопровождающих AWS SDK для iOS. Я постараюсь ответить на ваши вопросы/проблемы по одному.

  1. Важно понимать, что AssumeRoleRequest является подписанным запросом и требует, чтобы ваш AmazonSecurityTokenServiceClient был инициализирован учетными данными. Вместо этого вы можете рассмотреть возможность использования AssumeRoleWithWebIdentityRequest. У нас есть пример, в котором показано, как использовать федерацию веб-удостоверений.
  2. Установка для политики значения «Нет», скорее всего, приведет к ошибке. Вы должны либо предоставить JSON политики, которую хотите предоставить, либо ноль. Эта политика должна быть подмножеством разрешений, установленных для роли, которую вы принимаете.
  3. Ошибка SSL, которую вы получаете, может означать, что вы либо получаете неверные результаты DNS, либо, возможно, находитесь за каким-то прокси-сервером. Дают ли другие сервисы AWS аналогичные результаты?

Наконец, вам понадобятся только следующие строки импорта в вашем коде:

#import <AWSRuntime/AWSRuntime.h>
#import <AWSSecurityTokenService/AWSSecurityTokenService.h>
person Bob Kinney    schedule 18.10.2013
comment
Спасибо за вашу помощь. Я проверю ошибку SSL. Я также получаю еще одну ошибку. Я написал об ошибке в следующем комментарии. - person iOS; 21.10.2013
comment
objc[519]: класс AXEmojiUtilities реализован как в /Applications/Xcode5-DP.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/System/Library/PrivateFrameworks/AccessibilityUtilities.framework/ AccessibilityUtilities и /Applications/Xcode5-DP.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/usr/lib/libAXSpeechManager.dylib. Один из двух будет использован. Какой из них не определено. - person iOS; 21.10.2013
comment
Не могли бы вы привести образец для AssumeRole API? - person iOS; 21.10.2013
comment
Я исправил эту проблему. Проблема в том, что мы не можем использовать клавиатуру Emoji в симуляторе. В устройстве вышеуказанное сообщение об ошибке (т.е. Класс AXEmojiUtilities реализован в....) не появляется. - person iOS; 21.10.2013
comment
Другие сервисы AWS работают нормально. AmazonS3Client *s3 = [[AmazonS3Client alloc] initWithAccessKey:@XXXXXXXXXXXXXX withSecretKey:@XXXXXXXXXXXXXXXXYYYYYYYYYYYYYYY]; @try { [s3 createBucket:[[S3CreateBucketRequest alloc] initWithName:@myiosbuckets]]; S3PutObjectRequest *put = [[S3PutObjectRequest alloc] initWithKey:self.fileName inBucket:@myiosbuckets]; put.contentType = @видео/mp4; put.cannedACL = [S3CannedACL publicRead]; put.data = [NSData dataWithContentsOfURL:self.movieurl]; [s3 поставитьОбъект:положить]; - person iOS; 21.10.2013
comment
Можете ли вы объяснить, почему вы хотите использовать AssumeRole? Значение AssumeRoleWithWebIdentity заключается в том, что вам не нужны существующие учетные данные для выполнения запроса. - person Bob Kinney; 21.10.2013
comment
Я решаю пойти с AssumeRoleWithWebIdentity :) - person iOS; 23.10.2013