¿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

Defina un servidor de recursos con ámbitos personalizados en su grupo de usuarios de Amazon Cognito. A continuación, cree y configure un autorizador de Amazon Cognito para su API de API Gateway a fin de autenticar las solicitudes a sus recursos de API.

Si tiene diferentes clientes de aplicaciones que necesitan diferentes niveles de acceso a sus recursos de API, puede definir ámbitos de acceso diferenciados. Considere qué niveles de acceso granular podrían necesitar los diferentes clientes de la aplicación y, a continuación, diseñe en consecuencia.

Resolución

Cree los siguientes requisitos previos:

Agregar un servidor de recursos con ámbitos personalizados en un grupo de usuarios

1.    Abra la consola de Amazon Cognito.

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

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

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

5.    En la sección Interfaz de usuario alojada, seleccione Editar. A continuación, siga estos pasos:
En la lista desplegable Tipos de concesiones de OAuth 2.0, seleccione Concesión implícita.
En la lista desplegable Ámbitos personalizados, elija el ámbito personalizado que ha definido.
Nota: El formato de un ámbito personalizado es identificadorDelServidorDeRecursos/nombreDelÁmbito. 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.    Seleccione Guardar cambios.

Si sus aplicaciones móviles tienen un componente del servidor, utilice 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, puede 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 Terminología de configuración del cliente de aplicaciones. Para obtener más información sobre las concesiones de OAuth 2.0 para grupos de usuarios de Amazon Cognito, consulte Comprender las concesiones de OAuth 2.0 para grupos de usuarios de Amazon Cognito.

Crear un autorizador e integrarlo con una API

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

1.    Para crear el autorizador, siga las instrucciones que aparecen en Para 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, consulte la sección Obtener un token de acceso de grupo de usuarios para realizar pruebas de este artículo.

2.    Para integrar el autorizador con su API, siga las instrucciones que aparecen en Para configurar un autorizador COGNITO_USER_POOLS en los métodos.
Nota: En Ámbitos de OAuth, introduzca el identificador completo de un ámbito personalizado con el formato identificadorDelServidorDeRecursos/nombreDelÁmbito.

3.    Despliegue su API.

Obtener un token de acceso de grupo de usuarios para realizar pruebas

Utilice la interfaz de usuario web alojada de su grupo de usuarios para iniciar sesión y recuperar un token de acceso del servidor de autorización de Amazon Cognito. O bien, utilice las implementaciones de puntos de conexión 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ñe el cliente de su aplicación, asegúrese de que el cliente incluya los ámbitos previstos en la solicitud para evitar conceder permisos innecesarios.

1.    Introduzca la siguiente URL en su navegador web:
https://yourDomainPrefix.auth.region.amazoncognito.com/login?response_type=token&client_id=yourClientId&redirect_uri=redirectUrl
Nota: Sustituya yourDomainPrefix y region por los valores de su grupo de usuarios. Encuéntrelos en la consola de Amazon Cognito en la pestaña Nombre de dominio de su grupo de usuarios.
Reemplace yourClientId por el ID de su cliente de aplicación y reemplace redirectUrl por la URL de devolución de llamada de su cliente de aplicación. Búsquelos en la consola, en la pestaña Configuración del cliente de aplicación de su grupo de usuarios. Para obtener más información, consulte Punto de conexión Login.

2.    Inicie sesión en su grupo de usuarios como el usuario que creó.

3.    Copie 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=.

Llamar a una API como prueba

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

Para usar curl, ejecute el siguiente comando:

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

Nota: Sustituya restApiId por el ID de la API. Sustituya region por la región de AWS de su API. Sustituya stageName por el nombre de la etapa en la que se despliega su API. Sustituya resourceName por el nombre del recurso de la API. Sustituya accessToken por el token que copió. Para obtener más información, consulte Invocar una API de REST en Amazon API Gateway.

Cuando configura todo correctamente, obtiene 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 AWS
OFICIAL DE AWSActualizada hace un año