Как добавить карту логинов в CredentialsProvider?
Я интегрировал свою настройку пользовательских пулов с потоком федеративной идентификации с 9 шагами из соответствующей документации. Я следую за документацией и использую расширенный поток аутентификации.
Однако есть еще один дополнительный шаг, который я не совсем понимаю, который, возможно, вызывает мою опытную проблему с IOS SDK. В руководстве упоминается, что:
После проверки подлинности пользователя добавьте маркер удостоверения этого пользователя на карту имен входа в поставщике учетных данных. Имя поставщика будет зависеть от вашего идентификатора пула пользователей Amazon Cognito Identity. Он будет иметь следующую структуру: 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, по-видимому, предлагает метод входа, однако это не задокументировано.
Итак, мой вопрос: как я могу добавить свою карту логинов в свой провайдер учетных данных?
1 ответ
Вы не добавляете logins
словарь для провайдера учетных данных. AWSIdentityProviderManager
определяет следующий метод:
- (AWSTask<NSDictionary<NSString *, NSString *> *> *)logins;
Это асинхронно поставляет logins
словарь для провайдера учетных данных, и AWSCognitoIdentityUserPool
соответствует AWSIdentityProviderManager
, Итак, фрагмент кода - это все, что вам нужно. Если у вас возникла проблема, она не связана с logins
толковый словарь.