在阅读了大量文档和大量的尝试和错误之后,我能够在我的aws移动集线器应用程序中创建一个lambda(api网关)驱动的后端,用于开发者身份验证。
- 我已经将AWSCognitoCredentialsProviderHelper子类化,以创建我的开发人员身份提供者
- 已实现:getIdentityId、令牌和自定义类中的登录名
实例化:
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似乎从未从我的自定义身份提供程序中获得用户名等。任何帮助都将不胜感激。
您是否尝试过为您的身份池检查允许未经身份验证的身份的选项?
附言:不建议使用未经身份验证的身份存储用户敏感数据。
我还煞费苦心地将Mobile Hub Helper与多种登录变体集成在一起,其中包括Cognito用户池。
简而言之,MobileHubHelper身份管理器目前仅限于Facebook和谷歌登录机制。
除此之外,它还将破坏任何使用另一个身份提供程序配置项目的尝试。
你需要避免使用这个,或者从GitHub下载源代码并进行修改。