Saltar al contenido

¿Cómo autorizo el acceso a las API de API Gateway con ámbitos personalizados en Amazon Cognito?

6 minutos de lectura
0

Quiero autorizar el acceso a mis recursos de API de Amazon API Gateway con ámbitos personalizados en un grupo de usuarios de Amazon Cognito.

Descripción breve

Define un servidor de recursos con ámbitos personalizados en tu grupo de usuarios de Amazon Cognito. A continuación, crea y configura un autorizador de Amazon Cognito para tu API de API Gateway a fin de autenticar las solicitudes a tus recursos de API.

Si tienes diferentes clientes de aplicaciones que necesitan diferentes niveles de acceso a tus recursos de API, puedes definir ámbitos de acceso diferenciados. Considera qué niveles de acceso granular podrían necesitar los diferentes clientes de la aplicación y, a continuación, diséñalos en consecuencia.

Resolución

Crea los siguientes requisitos previos:

Incorporación de un servidor de recursos con ámbitos personalizados en un grupo de usuarios

1.    Abre la consola de Amazon Cognito.

2.    Define el servidor de recursos y los ámbitos personalizados.

3.    Tras crear el servidor de recursos, elige la pestaña Integración de aplicaciones.

4.    En la sección Clientes de aplicaciones y análisis, selecciona tu cliente de aplicación.

5.    En la sección Interfaz de usuario alojada, selecciona Editar. A continuación, sigue estos pasos:
En la lista desplegable Tipos de concesiones de OAuth 2.0, selecciona Concesión implícita.
En la lista desplegable Ámbitos personalizados, elige el ámbito personalizado que has definido.
Nota: El formato de un ámbito personalizado es resourceServerIdentifier/scopeName. Cuando un cliente solicita un ámbito personalizado en un flujo de OAuth 2.0, la solicitud debe incluir el identificador completo del ámbito en este formato.

6.    Selecciona Guardar cambios.

Si tus aplicaciones móviles tienen un componente del servidor, utiliza el flujo de concesión de código de autorización y la clave de prueba para el intercambio de código (PKCE). Con el flujo de concesión del código de autorización, los tokens son más seguros y nunca se exponen directamente a un usuario final.

Si la configuración no contiene ninguna lógica del servidor, puedes utilizar el flujo de concesión implícita. La concesión implícita no genera tokens de actualización. Esto evita que los tokens de actualización queden expuestos al cliente. Los tokens de actualización tienen una validez más larga y recuperan los identificadores de acceso y los ID más nuevos.

Importante: No almacene los tokens de actualización en un entorno del cliente.

Para obtener más información, consulte App client settings terminology. Para más información sobre las concesiones de OAuth 2.0 para grupos de usuarios de Amazon Cognito, consulta Comprender las concesiones de OAuth 2.0 para grupos de usuarios de Amazon Cognito.

Creación de un autorizador e integrarlo con una API

Para completar los siguientes pasos, sigue las instrucciones para integrar una API de REST con un grupo de usuarios de Amazon Cognito.

1.    Para crear el autorizador, sigue las instrucciones que aparecen en Cómo crear un autorizador COGNITO_USER_POOLS mediante la consola de API Gateway.
Nota: Tras la creación, aparece una opción en la consola para probar el autorizador. Esto requiere un token de identidad. Para usar un token de acceso a fin de probar la configuración fuera de la consola, consulta la sección Obtención de un token de acceso de grupo de usuarios para realizar pruebas de este artículo.

2.    Para integrar el autorizador con su API, sigue las instrucciones que aparecen en Cómo configurar un autorizador COGNITO_USER_POOLS en los métodos.
Nota: En Ámbitos de OAuth, introduce el identificador completo de un ámbito personalizado con el formato resourceServerIdentifier/scopeName.

3.    Despliega tu API.

Obtención de un token de acceso de grupo de usuarios para realizar pruebas

Usa la interfaz de usuario web alojada de tu grupo de usuarios para iniciar sesión y recuperar un token de acceso del servidor de autorización de Amazon Cognito. O bien, utiliza las implementaciones de puntos de enlace de OAuth 2.0 que están disponibles en los AWS SDK para dispositivos móviles y web a fin de recuperar un token de acceso.

Nota: Cuando un cliente de aplicación solicita la autenticación a través de la interfaz de usuario web alojada, la solicitud puede incluir cualquier combinación de ámbitos reservados por el sistema o ámbitos personalizados. Si el cliente no solicita ningún ámbito, el servidor de autenticación devuelve un token de acceso que contiene todos los ámbitos asociados al cliente. Cuando diseñes el cliente de tu aplicación, asegúrate de que este incluya los ámbitos previstos en la solicitud para evitar conceder permisos innecesarios.

1.    Introduce la siguiente URL en tu navegador web:
https://yourDomainPrefix.auth.region.amazoncognito.com/login?response_type=token&client_id=yourClientId&redirect_uri=redirectUrl
Nota: Sustituye yourDomainPrefix y region por los valores de tu grupo de usuarios. Puedes encontrarlos en la consola de Amazon Cognito en la pestaña Nombre de dominio de tu grupo de usuarios.
Sustituya yourClientId por el ID del cliente de su aplicación y redirectUrl por la URL de devolución de llamada del cliente de su aplicación. Búscalos en la consola, en la pestaña Configuración del cliente de aplicación de tu grupo de usuarios. Para más información, consulta Punto de enlace de inicio de sesión.

2.    Inicia sesión en tu grupo de usuarios como el usuario que creaste.

3.    Copia el token de acceso de la URL en la barra de direcciones. El token es una cadena larga de caracteres que sigue a access_token=.

Prueba de llamada a una API

Como prueba, usa el token de acceso como valor del encabezado de autorización para llamar a la API mediante el token de acceso. Puedes usar la aplicación Postman (en el sitio web de Postman) o el comando curl desde una interfaz de línea de comandos. Para más información sobre curl, consulta el sitio web del proyecto curl.

Para usar curl, ejecuta el siguiente comando:

curl https://restApiId.execute-api.region.amazonaws.com/stageName/resourceName -H "Authorization: accessToken"

Nota: Sustituye restApiId por el ID de la API. Sustituye region por la región de AWS de la API. Sustituye stageName por el nombre de la etapa en la que se despliega la API. Sustituye resourceName por el nombre del recurso de la API. Sustituye accessToken por el token que copiaste. Para más información, consulta Invocación de una API de REST en Amazon API Gateway.

Cuando configuras todo correctamente, obtienes un código de respuesta de 200 OK.

Información relacionada

Configuración de un cliente de aplicaciones para grupos de usuarios

Alcance del token de acceso (el marco de autorización de OAuth 2.0)

OFICIAL DE AWSActualizada hace 3 años