Как добавить карту логинов в 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 толковый словарь.

Другие вопросы по тегам