Share Your AWS re:Post Experience - Quick 3 Question Survey
Help us improve AWS re:Post! We're interested in understanding how you use re:Post and its impact on your AWS journey. Please take a moment to complete our brief 3-question survey.
¿Cómo configuro un grupo de usuarios de Amazon Cognito como autorizador en una API de REST de API Gateway?
Quiero configurar un grupo de usuarios de Amazon Cognito como autorizador en mi API de REST de Amazon API Gateway.
Descripción breve
Hay dos formas de configurar un grupo de usuarios de Amazon Cognito como autorizador en una API de REST de API Gateway:
Puede utilizar tokens de ID o tokens de acceso para la autorización. Los tokens de acceso pueden utilizar ámbitos personalizados en Amazon Cognito para autorizar el acceso a las API de API Gateway. Un autorizador de Lambda puede validar las afirmaciones en los tokens de ID y los tokens de acceso emitidos por Amazon Cognito.
Para más información, consulte los siguientes artículos:
- Using tokens with user pools
- About resource servers
- Creación de un grupo de usuarios de Amazon Cognito para una API REST
Resolución
Requisitos previos:
- Un grupo de usuarios de Amazon Cognito con un cliente de aplicaciones
- Un recurso de API de REST de API Gateway
Creación de un autorizador de COGNITO_USER_POOLS
Para obtener más información, consulte Integración de una API REST con un grupo de usuarios de Amazon Cognito. Siga las instrucciones de la sección Para crear un autorizador de COGNITO_USER_POOLS mediante la consola de API Gateway.
Cómo probar el nuevo autorizador de COGNITO_USER_POOLS
Siga estos pasos:
- Abra la consola de API Gateway.
- En el nuevo autorizador, seleccione el botón Probar.
- En la ventana Pruebas, en Autorización, introduzca un token de ID del nuevo grupo de usuarios de Amazon Cognito.
- Elija Pruebas.
Nota: Si el token de ID es correcto, la prueba devuelve un código de respuesta 200. Un token de ID incorrecto devuelve un código de respuesta 401.
Configuración del autorizador de COGNITO_USER_POOLS en un método de API
Para obtener más información, consulte Integración de una API REST con un grupo de usuarios de Amazon Cognito. Siga las instrucciones de la sección Para configurar un autorizador de COGNITO_USER_POOLS en los métodos.
Obtención de los tokens de autorización
Hay cuatro formas de obtener los tokens de autorización:
- ¿Cómo puedo configurar la interfaz de usuario web alojada para Amazon Cognito?
- Usar la interfaz de línea de comandos de AWS (AWS CLI).
- Usar uno de los AWS SDK.
- Usar la aplicación Postman.
Nota: Configure la interfaz de usuario alojada de Amazon Cognito con una concesión de código de autorización para que su aplicación pueda intercambiar el código por un punto de enlace de token.
Si utiliza un tipo de concesión implícita, puede obtener la concesión desde la URL de devolución de llamada. La URL de devolución de llamada se adjunta a los parámetros del token de acceso y token de ID para el flujo implícito. Asegúrese de utilizar el tipo de token correcto.
Uso de la interfaz de usuario alojada de Amazon Cognito para obtener tokens de autorización
Nota: Cuando utilice el flujo de concesión del código de autorización, el parámetro del tipo de respuesta debe ser «code».
Para usar el flujo de concesión de códigos de autorización, haga lo siguiente:
-
Envíe una solicitud GET para la concesión del código de autorización:
https://example_domain/oauth2/authorize?response_type=code&client_id=example_app_client_id&redirect_uri=example_callback_url
Nota: Sustituya example_domain por el nombre de dominio de su grupo de usuarios. Sustituya example_app_client_id por la ID de cliente de la aplicación de su grupo de usuarios. Sustituya example_callback_url por la URL de devolución de llamada. Incluya el parámetro identity_provider para que el punto de enlace lo redirija al proveedor de identidades federadas. Si el cliente de la aplicación está configurado solo para grupos de usuarios de Amazon Cognito, el siguiente punto de enlace redirige al punto de enlace /login:
https://example_domain/login?response_type=code&client_id=example_app_client_id&redirect_uri=example_callback_url
-
Inicie sesión en su grupo de usuarios o en su proveedor de identidades federadas. La interfaz de usuario redirige a la URL especificada en la devolución de llamada del cliente de la aplicación.
Importante: La URL de redirección incluye el código de autorización que debe intercambiarse con el punto de conexión de token para obtener los tokens válidos. -
Envíe una solicitud POST al punto de conexión /oauth2/token para intercambiar un código de autorización por tokens. Para obtener más información, consulte Token endpoint.
Ejemplo de solicitud POST para intercambiar un código de autorización por tokens
Nota: La solicitud POST de ejemplo usa el siguiente punto de conexión /oauth2/token: https://example_domain.auth.us-east-1.amazoncognito.com/oauth2/token&
Content-Type='application/x-www-form-urlencoded'&Authorization=Basic ZXhhbXBsZTEyMzQ1Njc4OTA6enl4OTh3N3l2dHNycTY1NHBvMzIx grant_type=authorization_code& client_id=example1234567890& code=AUTHORIZATION_CODE& redirect_uri=com.myclientapp://myclient/redirect
Ejemplo de respuesta a una solicitud POST
HTTP/1.1 200 OK Content-Type: application/json { "access_token":"abCde1example", "id_token":"abCde2example", "refresh_token":"abCde3example", "token_type":"Bearer", "expires_in":3600 }
Nota: Cuando utilice el flujo de concesión implícita, el parámetro del tipo de respuesta debe ser «token».
Para usar el flujo de concesión implícita, haga lo siguiente:
-
Envíe una solicitud GET para una concesión implícita:
https://example_domain/oauth2/authorize?response_type=token&client_id=example_app_client_id&redirect_uri=example_callback_url
Nota: Sustituya example_domain por el nombre de dominio de su grupo de usuarios. Sustituya example_app_client_id por la ID de cliente de la aplicación de su grupo de usuarios. Sustituya example_callback_url por la URL de devolución de llamada. Incluya el parámetro identity_provider para que el punto de enlace lo redirija al proveedor de identidades federadas. Si el cliente de la aplicación está configurado solo para grupos de usuarios de Amazon Cognito, el siguiente punto de enlace redirige al punto de enlace /login:
https://example_domain/login?response_type=token&client_id=example_app_client_id&redirect_uri=example_callback_url
-
Inicie sesión en su grupo de usuarios con el nombre de usuario y la contraseña de un usuario existente, o cree un usuario nuevo para iniciar sesión. La interfaz de usuario redirige a la URL especificada en la devolución de llamada del cliente de la aplicación.
Nota: La URL de redirección incluye el token de ID y el token de acceso.
Ejemplo de URL de redirecciónhttps://www.example.com/#id_token=123456789idtoken123456789&access_token=123456789accesstoken123456789expires_in=3600&token_type=Bearer
Uso de la AWS CLI para obtener los tokens de autorización
Nota: Si se muestran errores al ejecutar comandos de la AWS CLI, consulte Errores de solución de problemas de la AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.
Ejecute el siguiente comando de la AWS CLI initiate-auth para obtener los tokens de autorización:
aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=example_user,PASSWORD=example_password --client-id example_app_client_id
Importante: Sustituya example_user por su nombre de usuario, example_password por su contraseña y example_app_client_id por su ID de cliente de la aplicación.
Ejemplo de respuesta del comando initiate-auth de AWS CLI
{ "AuthenticationResult": { "AccessToken": "abCde1example", "IdToken": "abCde2example", "RefreshToken": "abCde3example", "TokenType": "Bearer", "ExpiresIn": 3600 }, "ChallengeParameters": {} }
Uso de uno de los AWS SDK para obtener los tokens de autorización
Para obtener más información, consulte Integrating Amazon Cognito authentication and authorization with web and mobile apps.
Uso de Postman para obtener tokens de autorización
Utilice el modo de autorización OAuth 2.0 del sitio web de Postman para obtener los tokens de autorización. Para obtener más información, consulte ¿Por qué aparecen errores 401 no autorizados de API Gateway después de crear un autorizador de Lambda?
Configure los ámbitos personalizados de OAuth 2.0 en los grupos de usuarios de Amazon Cognito y verifique los ámbitos en API Gateway
Un ámbito proporciona un nivel de acceso que una aplicación puede solicitar a un recurso. Amazon Cognito cuenta con ámbitos de OAuth integrados que se pueden configurar para permitir la asociación de un cliente de aplicaciones a un grupo de usuarios. Para obtener más información sobre los ámbitos integrados en Amazon Cognito, consulte App client terms.
Los ámbitos personalizados se pueden asociar a los servidores de recursos de OAuth 2.0. Para obtener más información sobre los servidores de recursos, consulte OAuth 2.0 scopes and API authorization with resource servers.
Cuando usa Amazon Cognito con API Gateway, el autorizador de Amazon Cognito autentica la solicitud y protege los recursos. Utilice ámbitos personalizados con Amazon Cognito y API Gateway para proporcionar niveles diferenciados de acceso a sus recursos de API. También tiene más control a la hora de exponer los recursos para obtener los ámbitos de los tokens de acceso.
Configuración de un servidor de recursos y los ámbitos personalizados de OAuth 2.0 en un grupo de usuarios
- Defina el servidor de recursos y los ámbitos personalizados para su grupo de usuarios.
- En el identificador del servidor de recursos, proporcione el punto de enlace HTTPS de API Gateway donde se encuentran sus recursos.
- Si es necesario, configure un cliente de aplicación para el grupo de usuarios y, a continuación, agregue los ámbitos personalizados en la configuración del cliente de aplicación.
Nota: El nombre de un ámbito personalizado tiene el formato resourceServerIdentifier/scopeName
Cuando una aplicación de cliente solicita un ámbito personalizado en un flujo de OAuth 2.0, la aplicación de cliente debe solicitar el identificador completo del ámbito. Por ejemplo, si el identificador del servidor de recursos es https://myresourceserver.example.com y el nombre del ámbito es resources.read, la aplicación de cliente debe solicitar https://myresourceserver.example.com/resources.read en la versión ejecutable.
Verificación de los ámbitos personalizados de OAuth 2.0 en API Gateway
- Integre una API de REST con un grupo de usuarios de Amazon Cognito.
- En la consola de API Gateway, elija una API de REST.
- En el panel Recursos, elija un nombre para el método.
- Elija la configuración Solicitud de método.
- En la lista desplegable Autorización, elija Autorizador de Cognito. Esto agrega automáticamente un campo nuevo denominado Ámbitos de OAuth.
- En el campo Ámbitos de OAuth, introduzca el identificador completo del ámbito personalizado en el formato mencionado anteriormente. Por ejemplo, https://myresourceserver.example.com/resources.read.
- Guarde y despliegue la API.
Uso de Postman o CURL para probar la configuración
- Para obtener el token de acceso del servidor de autorización de Amazon Cognito, utilice uno de los flujos de OAuth 2.0 definidos para el cliente.
- Envíe el token de acceso recibido que recibió como encabezado de autorización en una solicitud a API Gateway.
Si todo funciona correctamente y API Gateway valida y verifica el token de acceso y el ámbito personalizado, obtendrá la respuesta 200 OK.
Información relacionada
¿Cómo puedo decodificar y verificar la firma de un token web JSON de Amazon Cognito?
Controlar el acceso a una API de REST mediante grupos de usuarios de Amazon Cognito como autorizador

Contenido relevante
- preguntada hace un meslg...
- preguntada hace 20 díaslg...
- Como solucionar el error: Supplied Policy document is breaching Cloudwatch Logs policy length limit.Respuesta aceptadapreguntada hace un meslg...
- preguntada hace un meslg...
- preguntada hace 2 meseslg...
- OFICIAL DE AWSActualizada hace 10 meses
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace un año