0

在阅读了大量文档和大量试验和错误之后,我实际上能够在我的 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 从来没有从我的自定义身份提供者那里获得用户名等。任何帮助将不胜感激。

4

2 回答 2

0

我还努力将 Mobile Hub Helper 与多种登录变体集成。其中包括 Cognito 用户池。

简短的回答是,MobileHubHelper 身份管理器目前仅限于 Facebook 和 Google 登录机制。

除此之外,它还将破坏使用另一个身份提供者配置您的项目的任何尝试。

您需要避免使用它,或者从 Git Hub 下载源代码并进行修改。

于 2016-08-20T00:40:45.340 回答
0

您是否尝试过检查允许身份池使用未经身份验证的身份的选项?

PS:不推荐针对未经身份验证的身份存储用户敏感数据。

于 2016-07-18T08:24:56.640 回答