Как пройти аутентификацию с использованием Enabled Identity Provider
Я ищу документацию о том, как расширить наш существующий процесс аутентификации Cognito, чтобы включить дополнительные "Включенные провайдеры идентификации".
В настоящее время мы делаем следующее
var userPool = new CognitoUserPool(poolId, clientId, provider);
var user = new CognitoUser(username, clientId, userPool, provider);
var context = await user.StartWithSrpAuthAsync(new InitiateSrpAuthRequest { Password = string.IsNullOrEmpty(temppassword) ? password : temppassword });
Если в результате context.AuthenticationResult
не равен NULL, тогда мы находимся в гонках, и я могу использовать context.AuthenticationResult.IdToken в качестве OAuthBearerToken при последующих вызовах конечных точек шлюза API AWS, которые защищены тем же пулом пользователя Cognito.
Все это прекрасно работает, но теперь мы пытаемся включить других провайдеров идентификации (начиная сначала с Auth0), и теперь я в растерянности, как получить IdToken, который шлюз API будет распознавать из Cognito, для пользователя, который находится в один из включенных провайдеров идентификации.
1 ответ
Я не работал над пулами пользователей AWS. Но я просмотрел несколько документов, которые, по моему мнению, дают ответ на вашу проблему.
Q: Все это прекрасно работает, но сейчас мы пытаемся включить других провайдеров идентификации (начиная сначала с Auth0).
A:
Прежде всего, в общих сценариях Amazon Cognito представлены различные сценарии использования AWS coginito. Я предпочитаю, чтобы вы прошли через это и поняли их.
Там вы можете найти аутентификацию с помощью пула пользователей.
Пользователи вашего приложения могут войти в систему либо напрямую через пул пользователей, либо выполнить федерацию через стороннего поставщика удостоверений (IdP).
Кроме того, если вы посещаете пользовательские пулы Amazon Cognito, вы можете видеть, что они выделяют одно и то же,
Вход в социальные сети через Facebook, Google и вход через Amazon, а также вход с поставщиками удостоверений SAML из вашего пула пользователей.
Теперь вам нужно настроить поставщика OpenID Connect (как вы сказали, Auth0) для федерации.
Согласно документации, пул пользователей может быть настроен для различных сторонних входов. Это выделено в разделе Добавление входа в пул пользователей через сторонних производителей.
Для конфигураций, связанных с OpenID Connect, документацию можно найти в разделе Добавление поставщиков удостоверений OIDC в раздел " Пул пользователей ". Наконец, поток и то, что происходит за кулисами, можно найти в потоке аутентификации IdP пула пользователей OIDC.
Q: Я сейчас в растерянности, как получить IdToken, который шлюз API будет распознавать из Cognito.
A:
Что касается токенов, то в этом потоке пользовательский пул AWS выступает в качестве проверяющей стороны. Поэтому поставщик OpenID Connect (например: OAuth0) выдает токены в AWS. Как только токены будут получены и проверены, ваше приложение получит токены от AWS, которые являются стандартными, как если бы вы получили аутентификацию SRP. Это выделено, как показано ниже,
Благодаря встроенному размещенному веб-интерфейсу Amazon Cognito обеспечивает обработку и управление токенами для всех аутентифицированных пользователей, поэтому ваши бэкэнд-системы могут стандартизироваться на одном наборе токенов пула пользователей.
К сожалению, я не уверен насчет примеров кода.
Надеюсь, это помогло.