我正在使用AWS C ++ SDK在Windows中编写C ++应用程序,并需要有关Developer Authenticated Identities的帮助,以便在我的应用程序中上传/下载S3中的文件。
我们有一个使用Cognito的后端应用程序来获取AWS的临时凭证(IdentityID& OpenIDToken)。我知道ProviderName和IdentityPoolID。 而不是描述我尝试过的东西,我相信它更容易展示 以下是片段。我试图做相当于C#和Java SDK中提供的“刷新身份”。 C#和Java都使用“RefreshIdentity”来定义IdentityState(IdentityID,ProviderName,OpenIDToken,fromCacheFlag)
根据我发现的一些文档,我创建了一个从CognitoIdentityClient派生的新类(MyInheritedCognitoIdentityClient),它覆盖了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 :(得分:0)
您需要致电GetCredentialsForIdentity
服务器端,如果没有人可以登录您自己创建的提供商(我假设login.mycompany.net
是自定义提供商)