Tengo una aplicación móvil con opciones de registro/inicio de sesión. La aplicación móvil realiza llamadas a las API Rest y las API utilizan el cliente Python boto3 CognitoIdentityProvider para crear usuarios en grupos de usuarios de AWS Cognito. Iniciar sesión con correo electrónico/contraseña funciona bien.
Para el inicio de sesión social, la aplicación móvil se actualiza con el inicio de sesión de Google y obtiene idToken, accessToken. ¿Cómo uso el token de inicio de sesión devuelto por Google para iniciar sesión/crear un usuario en el grupo de usuarios de Cognito desde el entorno de back-end de Python? ¿Es esto factible?
Para las opciones de nombre de usuario/contraseña, uso los métodos de registro y admin_initiate_auth . Pero no estoy seguro de qué usar para permitir que los usuarios inicien sesión o creen usuarios en UserPool cuando usan la opción de inicio de sesión de Google/Facebook.
Esencialmente, ¿hay alguna forma en Boto3 u otras bibliotecas de AWS para crear usuarios en UserPool usando google/facebook devuelto idToken>
El método get_id del servicio boto3 CongnitoIdentity soluciona el problema.
Con el token de ID devuelto por Google, llame a get_id para crear una identidad federada.
client = boto3.client('cognito-identity', aws_access_key_id=ACCESS_KEY, aws_secret_access_key=ACCESS_SECRET_KEY) response = client.get_id( AccountId='YOUR AWS ACCOUNT ID', IdentityPoolId='us-east-1:xxxdexxx-xxdx-xxxx-ac13-xxxxf645dxxx', Logins={ 'accounts.google.com': 'google returned IdToken' }, )La respuesta incluye el IdentityId de Cognito:
{ "ResponseMetadata": { "RetryAttempts": 0, "HTTPStatusCode": 200, "RequestId": "xxxfb049b-1f77-xxxx-a67c-xxxfb049b", "HTTPHeaders": { "date": "Sun, 04 Mar 2018 06:43:13 GMT", "x-amzn-requestid": "xxxfb049b-1f77-xxx-a67c-xxxfb049b", "content-length": "63", "content-type": "application/x-amz-json-1.1", "connection": "keep-alive" } }, "IdentityId": "us-east-1:xxx-2xx1-1234-9xx2-xxxx" }