関連ドキュメントの 9 つの手順を使用して、ユーザー プールの設定をフェデレーション ID フローと統合しました。ドキュメントに従い、強化された認証フローを使用しています。
ただし、IOS SDK で経験した問題を引き起こしている可能性があることを理解できない追加の手順があります。ガイドには次のように記載されています。
ユーザーが認証されたら、そのユーザーの ID トークンを資格情報プロバイダーのログイン マップに追加します。プロバイダー名は、Amazon Cognito ID ユーザープール ID によって異なります。次の構造になります: cognito-idp..amazonaws.com/
次に、次の IOS SDK スニペットを提供します。
AWSCognitoIdentityUserPool *pool = [[AWSCognitoIdentityUserPoolalloc] initWithClientId:@"YOUR_CLIENT_ID"clientSecret:@"YOUR_CLIENT_SECRET"poolId:@"YOUR_USER_POOL_ID"];
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvideralloc] initWithRegionType:AWSRegionUSEast1identityPoolId:@"IDENTITY_POOL_ID"identityProviderManager:pool];
しかし、私の理解では、このコードの資格情報プロバイダーに追加されたログイン マップはありません。JavaScript と Java のバージョンを見ると、これが明示的に設定されていることがわかります。掘り下げた後、IOS-SDK のメソッド、つまりsetLoginsメソッドも見つけましたが、このメソッドは非推奨です。ドキュメントに基づいて、次のように開始できることは理にかなっています。
[self.credentialsProvider setLogins:@{@"cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>": @"id_token"}];
ただし、これにより減価償却の警告が発生します。
setLogins is deprecated. Use 'AWSIdentityProviderManager' to provide a valid logins dictionary to the credentials provider
AWSIdentityProviderManager プロトコルは logins メソッドを提供しているようですが、これは文書化されていません。
私の質問は次のとおりです。資格情報プロバイダーにログインマップを追加するにはどうすればよいですか?