Solución:
Para pasar el token JWT del grupo de usuarios de Cognito, debe utilizar el Logins Map
en el GetId
Llamada a API. Puede probar el siguiente código de Python por su parte, después de reemplazar los marcadores de posición necesarios.
response = client.get_id(
AccountId='string',
IdentityPoolId='string',
Logins={
'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>': '<JWT ID Token>'
}
)
Si no proporciona un mapa de inicios de sesión, Amazon Cognito trata el evento de autenticación como no autenticado y, por lo tanto, se enfrenta a este error.
Solo para agregar a la respuesta de Arka Mukherjee anterior, para obtener el token, hago esto:
auth_data = { 'USERNAME':username , 'PASSWORD':password }
provider_client=boto3.client('cognito-idp', region_name=region)
resp = provider_client.admin_initiate_auth(UserPoolId=user_pool_id, AuthFlow='ADMIN_NO_SRP_AUTH', AuthParameters=auth_data, ClientId=client_id)
token = resp['AuthenticationResult']['IdToken']
Aquí tengo que usar el nombre de usuario y la contraseña del usuario de Cognito, client_id es la identificación del cliente de la aplicación para el cliente de la aplicación que configuré a través de Cognito, y user_pool_id es la identificación del grupo de usuarios.
Tenga en cuenta que mi cliente de aplicación tiene esta opción marcada / seleccionada: Habilite la API de inicio de sesión para la autenticación basada en servidor (ADMIN_NO_SRP_AUTH) y creé ese cliente de aplicación sin clave secreta (aparentemente eso es importante para los clientes web especialmente).