amazon s3 — Использование DeveloperCredentials для клиента AWS S3 в переполнении стека

Я пишу приложение на C ++ в Windows, используя AWS C ++ SDK, и мне нужна помощь с идентификационными данными разработчика, чтобы загружать / скачивать файлы в / из S3 в моем приложении.

У нас есть серверное приложение, использующее Cognito для получения временных учетных данных для AWS (IdentityID & OpenIDToken). Я знаю имя провайдера и идентификатор удостоверения личности.
Вместо того, чтобы описать то, что я пытался, я считаю, что это легче показать.
Ниже приведен фрагмент. Я пытаюсь сделать эквивалент «Обновить личность», который доступен в C # и Java SDK. C # и Java оба используют «RefreshIdentity», который определяет IdentityState (IdentityID, ProviderName, OpenIDToken, fromCacheFlag)

Основываясь на найденной мной документации, я создал новый класс (MyInheritedCognitoIdentityClient), производный от CognitoIdentityClient, который переопределяет GetId & Функции GetOpenIdToken возвращают IdentityID и openIdToken, полученные от серверного приложения. GetID вызывается, но GetOpenIdToken не вызывается — как следует из документации; вместо этого есть вызов GetCredentialsForIdentity (который завершается с NotAuthorizedException).
Ниже приведен мой фрагмент кода:

      `{
std::shared_ptr<MyInheritedPersistentCognitoIdentityProvider> identityProvider = std::make_shared<MyInheritedPersistentCognitoIdentityProvider>();
identityProvider->setIdentityPool(myIdentityPoolID); // us-east-1:c373a2ca-b912-3839-a65c-8d4ce53d512e -> not real
identityProvider->setAccountId(myProviderName); // login.mycompany.net

std::shared_ptr<MyInheritedCognitoIdentityClient> cognitoIdentityClient =
std::make_shared<MyInheritedCognitoIdentityClient>(); // _cognitoID and _openIdToken
std::shared_ptr<Aws::Auth::AWSCredentialsProvider> cognitoCachCredProvider =
std::make_shared<Aws::Auth::CognitoCachingAuthenticatedCredentialsProvider>(identityProvider, cognitoIdentityClient);
Aws::S3::S3Client s3Client(cognitoCachCredProvider);

/* attempt to upload/download here */

} `

0

Решение

тебе нужно позвонить GetCredentialsForIdentity на стороне сервера, если не кто-нибудь может войти в свой собственный созданный провайдер (я предполагаю, login.mycompany.net это пользовательский провайдер)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]