Аутентифицированные удостоверения разработчиков AWS Cognito и загрузка в S3

Я пытаюсь аутентифицировать службу AWS Cognito для загрузки изображений в корзину S3. Я пытался выполнить "http://docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html", но я запутался. Я хочу пройти аутентификацию, используя идентификаторы разработчика, поскольку я не использую службы Cognito для входа в систему. Мой класс, используемый для аутентификации, выглядит следующим образом:

import AWSCore
class DeveloperAuthenticatedIdentityProvider : AWSCognitoCredentialsProviderHelper {
     override func token() -> AWSTask<NSString> {

          //I have no clue what it returns and there also an error here
          self.identityId = response.identityId
          return AWSTask(result: response.token)

     }
}

Я использую свои учетные данные, как показано ниже:

 let devAuth = DeveloperAuthenticatedIdentityProvider(regionType: .USWest2, identityPoolId: "pool-id", useEnhancedFlow: true, identityProviderManager:nil)
 let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USWest2, identityProvider:devAuth)
 let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider:credentialsProvider)
 AWSServiceManager.default().defaultServiceConfiguration = configuration

И я загружаю на S3, как показано ниже:

let uploadRequest = AWSS3TransferManagerUploadRequest()
uploadRequest?.body = fileURL as URL
let awsImageName = "1002_" + UUID().uuidString
uploadRequest?.key = awsImageName + "." + ext
uploadRequest?.bucket = S3BucketName
uploadRequest?.contentType = "image/" + ext
let transferManager = AWSS3TransferManager.default()
 // Perform Upload
transferManager.upload(uploadRequest!).continueWith(block: { (task:AWSTask<AnyObject>) -> AnyObject! in

Он отлично работает без аутентификации, но я хочу использовать его с аутентификацией. Может ли кто-нибудь сказать, как мне поступить? Я новичок в Swift, а также в AWS Cognito Services.


person Geethanjali Reddy    schedule 04.12.2017    source источник


Ответы (1)


Я думаю, что вы переключаете cognitio с IAM. Cognito используется в качестве поставщика удостоверений для вашего собственного приложения или мобильного приложения. Это поставщик облачных удостоверений, который вы можете использовать как услугу. Вы можете разрешить другим пользователям регистрироваться через свой собственный пользовательский интерфейс и комбинировать это с Facebook, Google, ...

IAM используется для определения того, кто может использовать такие облачные сервисы, как Cognito, S3, EC2. Какие роли необходимы для использования s3 и т. д.

Причина, по которой он работает без аутентификации, заключается в том, что вы, вероятно, установили AWS SDK или cli, в котором хранится эта информация IAM. Ваше приложение будет использовать его как запасной вариант.

Взгляните на IAM, создайте роль разработчика, которая может получить доступ к S3, и примите эту роль. Получите секрет и ключи доступа к своей учетной записи, и вы можете пока забыть о Cognito????

Больше информации:

http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html

http://docs.aws.amazon.com/cli/latest/userguide/cli-roles.html

person Rob Van Pamel    schedule 12.12.2017