大量のドキュメントを読み、多くの試行錯誤を繰り返した結果、aws モバイル ハブ アプリケーションで開発者認証用のラムダ (API ゲートウェイ) 駆動型バックエンドを実際に作成することができました。
- AWSCognitoCredentialsProviderHelper をサブクラス化して、開発者 ID プロバイダーを作成しました
- 実装: カスタム クラスの 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
次に、credentialProvider.credentials() を実行して、バックエンドから返された token/identityId の認証済み資格情報を取得します。これはすべて機能しているようで、AccessKey、SessionKey などが返されます。したがって、正常に機能しているようです。
ただし、continue ブロックで、AWSDynamoDB または syncdata を呼び出そうとすると、次のようになります。
Unauthenticated access is not supported for this identity pool.
モバイル ハブ アプリ内の AWS サービスが更新された認証情報を確実に受信できるようにするには、何が不足している可能性がありますか? また、AWSIdentityManager をこれに含めるにはどうすればよいですか? AWSIdentityManager.defaultIdentityManger がカスタム ID プロバイダーから userName などを取得しないように見えるためです。どんな助けでも本当に感謝します。