在阅读了大量文档和大量试验和错误之后,我实际上能够在我的 aws 移动集线器应用程序中创建一个 lambda(api 网关)驱动的后端用于开发人员身份验证。
- 我已将 AWSCognitoCredentialsProviderHelper 子类化以创建我的开发人员身份提供商
- 实现:自定义类中的getIdentityId、token和login
实例化:
devIdentityProvider = DeveloperIdentityProvider(
regionType: AWSRegionType.USEast1,
identityPoolId: getIdentityPoolFromPlist()!,
useEnhancedFlow: true,
providerName: "login.myapp",
identityProviderManager: AWSIdentityManager.defaultIdentityManager())
let credentialsProvider = AWSCognitoCredentialsProvider(
regionType: AWSRegionType.USEast1,
unauthRoleArn: nil,
authRoleArn: nil,
identityProvider: devIdentityProvider!)
let configuration = AWSServiceConfiguration(
region: AWSRegionType.USEast1,
credentialsProvider: credentialsProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
然后我执行 credentialsProvider.credentials() 来获取从后端返回的令牌/身份 ID 的经过身份验证的凭据。所有这一切似乎都有效,我得到了 AccessKey、SessionKey 等。所以它似乎工作正常。
但是,在 continue 块中,如果我尝试调用 AWSDynamoDB 或 syncdata,我会得到:
Unauthenticated access is not supported for this identity pool.
为了确保移动中心应用程序中的 AWS 服务接收更新的凭证,我可能缺少什么?另外,我如何让 AWSIdentityManager 参与其中?因为似乎 AWSIdentityManager.defaultIdentityManger 从来没有从我的自定义身份提供者那里获得用户名等。任何帮助将不胜感激。