AWSCognitoCredentialsProvider
- это объект, который получает учетные данные из Amazon Cognito и предоставляет учетные данные для подписи запросов в AWS (например, для загрузки файла в S3).
AWSCognitoIdentityProvider
объект в SDK предоставляет абстракцию для Amazon Cognito UserPools и помогает войти в систему пользователя и получить токены, которые подтверждают, что пользователь прошел аутентификацию.
Когда пользователь вошел в систему и AWSCognitoIdentityProvider
получил токены из Amazon Cognito UserPools, токены можно объединить в AWSCognitoCredentialsProvider
, чтобы получить AWSCredentials и Cognito Identity Id для этого аутентифицированного пользователя. Для этого необходимо указать токен на карте входа и передать карту входа на номер AWSCognitoCredentialsProvider
.
Для этого вам нужно
1) создайте класс, который подтверждает протокол AWSIdentityProviderManager
и реализует метод logins
, который возвращает карту {providerLoginKey -> token}.
@interface AWSFederationManager : NSObject<AWSIdentityProviderManager>
@property (nonatomic, readonly, strong) AWSCognitoCredentialsProvider *credentialsProvider;
@end
@interface AWSFederationManager()
@property (nonatomic, readwrite, strong) AWSCognitoCredentialsProvider *credentialsProvider;
@end
@implementation AWSFederationManager
- (AWSTask<NSDictionary<NSString *, NSString *> *> *)logins {
return [AWSTask taskWithResult:@{[<identityProviderName> : <token>}];
}
@end
2) Установите для делегата объекта AWSCognitoCredentialsProvider
класс, созданный на шаге (1).
@implementation AWSFederationManager
- (instancetype) initialize {
[self.credentialsProvider setIdentityProviderManagerOnce:self];
}
@end
Теперь, когда федерация будет успешной, вы сможете получить AWSCredentials и Cognito Identity Id.
Вы можете обратиться Source для справочной реализации.