Configuré con éxito un entorno de AWS Cognito que se ejecuta en Localhost siguiendo este tutorial .
Para el siguiente paso, publiqué la aplicación en mi servidor web externo. Confirmé que la configuración de Cognito (es decir, ID de cliente, dirección de metadatos, región, etc.) es correcta. Sin embargo, cuando accedo e intento iniciar sesión en el sitio público recién publicado, recibo el siguiente error: "El cliente no está habilitado para los flujos de OAuth2.0".
EDITAR:
Aquí está la configuración del cliente de mi aplicación
Me gustaría recibir ayuda con lo que debo investigar en la configuración de AWS Cognito o en la configuración de configuración del servidor. El servidor NO está utilizando un equilibrador de carga. Creo que el problema puede estar en algún lugar de la configuración de proxy inverso o HTTPS.
He visto este problema antes. Al realizar la solicitud a Cognito, observe detenidamente la URL de redireccionamiento/URL de devolución de llamada que está especificando. Si no recuerdo mal, he visto este problema si tiene un '/' al final o un '/' faltante en la URL de redireccionamiento, según lo que haya especificado en la configuración del cliente de la aplicación.
TLDR: además de las respuestas anteriores, asegúrese de que su URL de devolución de llamada esté en minúsculas.
Respuesta larga: encontré el mismo error. En mi caso, había copiado el nombre DNS de mi balanceador de carga de aplicaciones de la ventana de descripción de la página del balanceador de carga donde había una variedad de mayúsculas y minúsculas.
Así que puse lo siguiente en la URL de devolución de llamada y encontré el error en cuestión:
https://*AppLBTest*-123456123456.ap-southeast-1.elb.amazonaws.com/oauth2/idpresponse
Después de cambiar la URL de devolución de llamada a la siguiente, la autenticación funcionó como se esperaba:
https://*applbtest*-123456123456.ap-southeast-1.elb.amazonaws.com/oauth2/idpresponse
Esto también ocurre cuando configura Cognito con Cloudformation o AWS SAM y olvida habilitar la propiedad AllowedOAuthFlowsUserPoolClient en true.
Resources: FooBarUserPoolClient: Type: AWS::Cognito::UserPoolClient Properties: AllowedOAuthFlowsUserPoolClient: True # Set here