适用于 IOS 的 AWS Cognito 凭证提供程序 - 访问密钥和私有密钥为零



我正在尝试使用 Objective C 中的AWSCognito对 Amazon SimpleDB 数据库进行身份验证。我使用我的 Amazon 账户中提供的身份池 ID 发起AWSCognitoCredentialsProvider。问题是,当我尝试从AWSCognitoCredentialsProvider对象获取访问密钥和私有密钥时,它们是零。

我像这样启动凭据提供程序:

 AWSCognitoCredentialsProvider *credentialsProvider = [AWSCognitoCredentialsProvider credentialsWithRegionType:AWSRegionUSEast1 accountId:ACCOUNT_ID identityPoolId:IDENTITY_POOL_ID unauthRoleArn:UNAUTH_ROLE authRoleArn:AUTH_ROLE];
 AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider];
[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;

之后,我正在尝试初始化一个 SimpleDB 客户端,如下所示:

sdbClient = [[AmazonSimpleDBClient alloc] initWithAccessKey:[credentialsProvider accessKey] withSecretKey:[credentialsProvider secretKey]]; 

我做错了什么吗?

您是否混合了适用于 iOS 的 AWS 移动开发工具包版本 1 和 2?它们不是为一起使用而设计的,您应该考虑完全迁移到版本 2。

v2 SDK 会在适当时自动调用凭据提供程序上的- refresh。因为你没有使用AWSSimpleDB- refresh从未被调用过,这就是为什么accessKeysecretKey返回nil

AWSCognitoCredentialsProvider 生成由 accessKeysecretKeysessionKey 组成的 AWS 临时凭证。 - initWithAccessKey:withSecretKey: 不会采用临时凭证,即使您在凭证提供程序上手动调用- refreshAmazonSimpleDBClient也不会起作用。

我建议使用 AWSSimpleDB 而不是 AmazonSimpleDBClient 重写应用程序,以便使用 Amazon Cognito Identity。

相关内容

  • 没有找到相关文章

最新更新