针对移动集线器示例ios应用程序的AWS Developer身份验证

时间:2016-07-18 03:01:25

标签: amazon-web-services authentication amazon-cognito aws-sdk-ios aws-mobilehub

在阅读了大量文档和大量试验和错误后,我能够在我的移动集线器应用程序中实际创建一个lambda(api网关)驱动的后端,用于开发人员身份验证。

  • 我已经将AWSCognitoCredentialsProviderHelper子类化,以创建我的开发者身份提供者
  • 已实施:自定义类
  • 中的getIdentityId,token和logins

实例化:

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()以获取从我的后端返回的令牌/ identityId的经过身份验证的凭据。这一切似乎都有效,我回到了AccessKey,SessionKey等等。所以它似乎工作正常。

在continue块中,如果我尝试调用AWSDynamoDB或syncdata,我会得到:

Unauthenticated access is not supported for this identity pool.

为了确保移动中心应用中的AWS服务能够获得更新的凭据,我可能会缺少什么?另外,我如何参与AWSIdentityManager?因为似乎AWSIdentityManager.defaultIdentityManger永远不会从我的自定义身份提供程序获取userName等。任何帮助都将非常感激。

2 个答案:

答案 0 :(得分:0)

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

P.S。:建议不要使用针对未经身份验证的身份存储用户敏感数据。

答案 1 :(得分:0)

我也很努力将Mobile Hub Helper与多种登录方式集成在一起。其中包括Cognito用户池。

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

除此之外,它还会破坏使用其他身份提供程序配置项目的任何尝试。

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