如何在没有 Cognito 的情况下授权 dynamoDB?

How to auth dynamoDB without Cognito?

我知道在 iOS 中使用 DynamoDB 的最佳方法是 Cognito 如下代码:

    AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc]
                                                          initWithRegionType:AWSRegionUSEast1
                                                          identityPoolId:@"pool_id"];

    AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider];

问题是 Cognito 不受中国 AWS 服务支持。为了使用 DynamoDB,我认为我应该使用 AWSCredentialsProvider 协议实现自定义提供程序。对吗?

我用第三方社交网络(QQ)实现了登录过程。我有QQ生成的账号id和accessToken

问题是如何让用户通过QQ账号和access token访问DynamoDB?

在实施您自己的 AWSCredentialsProvider 时,我推荐以下方法:

  1. 在您的服务器上生成访问密钥、秘密密钥和会话令牌。您有许多语言选项,包括 Java、.NET、PHP、Ruby、Python 和 Node.js.
  2. 通过符合 AWSCredentialsProvider 来实施您的凭据提供程序。以 AWSWebIdentityCredentialsProviderAWSCognitoCredentialsProvider 的实现为例。该凭证提供者应该:
    • 从您的服务器检索 access keysecret keysession key
    • 将它们保留在本地直到它们过期。
    • Return 请求时的凭据。
    • 如果它们已过期,请从您的服务器重新检索它们。
    • 调用 - refresh 时启动凭据刷新过程。