View a markdown version of this page

Ámbitos, M2M y servidores de recursos - Amazon Cognito

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ámbitos, M2M y servidores de recursos

Después de configurar un dominio para su grupo de usuarios, Amazon Cognito aprovisiona automáticamente un servidor de autorización OAuth 2.0 y una interfaz de usuario web hospedada con páginas de registro e inicio de sesión que su aplicación puede presentar a sus usuarios. Para obtener más información, consulte Inicio de sesión administrado de grupos de usuarios. Puede elegir los ámbitos que desea que el servidor de autorización agregue a los tokens de acceso. Los ámbitos autorizan el acceso a los servidores de recursos y a los datos de los usuarios.

Un servidor de recursos es un servidor de API OAuth 2.0. Para asegurar los recursos con acceso protegido, valida que los tokens de acceso de su grupo de usuarios contengan los ámbitos que autorizan el método y la ruta solicitados en la API que protege. Verifica al emisor basándose en la firma del token, la validez en función del tiempo de caducidad del token y el nivel de acceso en función del alcance de las notificaciones de tokens. Los ámbitos del grupo de usuarios se indican en la notificación scope del token de acceso. Para obtener más información sobre las solicitudes de tokens de acceso a Amazon Cognito, consulte Descripción del token de acceso.

Con Amazon Cognito, los ámbitos de los tokens de acceso pueden autorizar el acceso a API externas o a atributos del usuario. Puede emitir tokens de acceso a usuarios locales, usuarios federados o identidades de máquinas.

Autorización de API

A continuación, indicamos varias formas de autorizar solicitudes a API con los tokens de Amazon Cognito:

Token de acceso

Cuando añada un autorizador de Amazon Cognito a una configuración de solicitud de método de la API de REST, añada ámbitos de autorización a la configuración del autorizador. Con esta configuración, la API acepta los tokens de acceso del encabezado Authorization y busca en ellos los ámbitos aceptados.

Token de ID

Cuando pasa un token de ID válido a un autorizador de Amazon Cognito en la API de REST, API Gateway acepta la solicitud y pasa el contenido del token de ID al backend de la API.

Amazon Verified Permissions

En los permisos verificados, tiene la opción de crear un almacén de API-linked políticas. Verified Permissions crea y asigna un autorizador de Lambda que procesa los tokens de ID o de acceso del encabezado Authorization de la solicitud. Este autorizador de Lambda pasa el token a su almacén de políticas, donde Verified Permissions lo compara con las políticas y devuelve al autorizador una decisión de permitir o denegar.

Machine-to-machine autorización (M2M)

Amazon Cognito admite aplicaciones que acceden a los datos de la API con identidades de máquinas. Las identidades de máquinas en los grupos de usuarios son clientes confidenciales que se ejecutan en servidores de aplicaciones y se conectan a API remotas. En su funcionamiento no interviene el usuario; se trata de tareas programadas, flujos de datos o actualizaciones de activos. Cuando estos clientes autorizan sus solicitudes con un token de acceso, realizan una autorización de máquina a máquina o M2M. En la autorización de M2M, se reemplazan las credenciales de usuario por un secreto compartido en el control de acceso.

Una aplicación que acceda a una API con una autorización de M2M debe tener un ID y un secreto de cliente. En el grupo de usuarios, es preciso crear un cliente de aplicación que admita la concesión de credenciales de cliente. Para admitir las credenciales de cliente, el cliente de aplicación debe tener un secreto de cliente y el responsable de la aplicación debe tener un dominio de grupo de usuarios. En este flujo, la identidad de su máquina solicita un token de acceso directamente del Punto de conexión de token. Solo puede autorizar ámbitos personalizados de los servidores de recursos en los tokens de acceso para la concesión de credenciales de clientes. Para obtener más información acerca de la configuración de clientes de aplicación, consulte Ajustes específicos de una aplicación en los clientes de aplicación.

El token de acceso de la concesión de credenciales de un cliente es una instrucción verificable de las operaciones que desea permitir que la identidad de su máquina solicite a una API. Para obtener más información sobre cómo los tokens de acceso autorizan las solicitudes de API, siga leyendo. Para ver un ejemplo de aplicación, consulte Amazon Cognito and API Gateway based machine to machine authorization using AWS CDK.

La autorización de M2M tiene un modelo de facturación que difiere de la forma en que se facturan los usuarios activos mensuales (MAU). Mientras que la autenticación de los usuarios conlleva un costo por usuario activo, la facturación de M2M refleja las credenciales de los clientes activos, los clientes de aplicaciones y el volumen total de solicitudes de tokens. Para obtener más información, consulte Precios de Amazon Cognito. Para controlar los costos que generan las autorizaciones de M2M, optimice la duración de los tokens de acceso y el número de solicitudes de token que realizan las aplicaciones. Consulte Administración de la caducidad y el almacenamiento en caché de los tokens del grupo de usuarios para ver una forma de utilizar el almacenamiento en caché de API Gateway para reducir las solicitudes de nuevos tokens en las autorizaciones de M2M.

Para obtener información sobre cómo optimizar las operaciones de Amazon Cognito que añaden costes a su AWS factura, consulte. Administración de costos

Metadatos del cliente para credenciales de cliente máquina a máquina (M2M)

Puede pasar los metadatos del cliente en las solicitudes M2M. Los metadatos del cliente son información adicional de un entorno de usuario o aplicación que puede contribuir a los resultados de una Desencadenador de Lambda anterior a la generación del token. En las operaciones de autenticación con un usuario principal, puede pasar los metadatos del cliente al activador previo a la generación del token en el cuerpo de AdminRespondToAuthChallengelas solicitudes a la RespondToAuthChallengeAPI. Dado que las aplicaciones dirigen el flujo de generación de tokens de acceso para M2M con solicitudes directas al Punto de conexión de token, tienen un modelo diferente. En el cuerpo POST de las solicitudes de token de credenciales de cliente, pasa un aws_client_metadata parámetro con el objeto de metadatos del cliente URL-encoded (x-www-form-urlencoded) a la cadena. Para obtener una solicitud de ejemplo, consulte Credenciales de cliente con autorización básica. A continuación, puede ver un ejemplo de parámetro que transfiere los pares clave-valor {"environment": "dev", "language": "en-US"}.

aws_client_metadata=%7B%22environment%22%3A%20%22dev%22,%20%22language%22%3A%20%22en-US%22%7D

Acerca de los ámbitos

Un ámbito es un nivel de acceso que una aplicación puede solicitar a un recurso. En un token de acceso de Amazon Cognito, el alcance está respaldado por la confianza que haya establecido con su grupo de usuarios: un emisor de tokens de acceso de confianza con una firma digital conocida. Los grupos de usuarios pueden generar tokens de acceso con ámbitos que demuestren que su cliente está autorizado para administrar parte o la totalidad de su propio perfil de usuario, o para recuperar datos de una API de backend. Los grupos de usuarios de Amazon Cognito emiten tokens de acceso con el ámbito de API reservado para los grupos de usuarios, los ámbitos personalizados y los ámbitos de OpenID Connect (OIDC).

Ámbito de API reservado para los grupos de usuarios

El ámbito aws.cognito.signin.user.admin autoriza al usuario actual las operaciones de autoservicio en la API del grupo de usuarios de Amazon Cognito. Autoriza al portador de un token de acceso a consultar y actualizar toda la información sobre el portador con, por ejemplo, las operaciones de la API GetUsery UpdateUserAttributeslas operaciones. Cuando autentique a su usuario con la API de grupos de usuarios de Amazon Cognito, este será el único ámbito que recibirá en el token de acceso. También es el único ámbito que necesita para leer y escribir atributos de usuario que haya autorizado que lea y escriba su cliente de aplicación. También puede solicitar este alcance en las solicitudes dirigidas al Autorizar punto de conexión. Este ámbito por sí solo no es suficiente para solicitar los atributos de usuario de El punto de conexión userInfo. En el caso de los tokens de acceso que autorizan la API de grupos de usuarios y las solicitudes de userInfo para los usuarios, debe solicitar ambos ámbitos openid y aws.cognito.signin.user.admin en una solicitud de /oauth2/authorize.

Ámbitos personalizados

Los ámbitos personalizados autorizan las solicitudes a las API externas que protegen los servidores de recursos. Puede solicitar ámbitos personalizados con otros tipos de ámbitos. Puede encontrar más información sobre los ámbitos personalizados en esta página.

Ámbitos de OpenID Connect (OIDC)

Cuando autentique usuarios con el servidor de autorización del grupo de usuarios, incluso con el inicio de sesión administrado, debe solicitar ámbitos. Puede autenticar usuarios locales de grupos de usuarios y usuarios federados de terceros en su servidor de autorización de Amazon Cognito. Los ámbitos de OIDC autorizan a su aplicación a leer información del usuario en el El punto de conexión userInfo de su grupo de usuarios. El modelo OAuth, por el que se consultan los atributos del usuario desde el punto de conexión de userInfo, puede optimizar su aplicación para un gran volumen de solicitudes de atributos del usuario. El punto de conexión de userInfo devuelve atributos en un nivel de permiso determinado por los ámbitos en el token de acceso. Puede autorizar al cliente de aplicación a emitir tokens de acceso con los siguientes ámbitos de OIDC.

openid

El ámbito mínimo para las consultas de OpenID Connect (OIDC). Autoriza el token de identificación, la solicitud de identificador único sub y la posibilidad de solicitar otros ámbitos.

nota

Cuando solicita el ámbito de openid y no otros, el token de ID del grupo de usuarios y la respuesta userInfo incluyen reclamaciones de todos los atributos de usuario que el cliente de la aplicación pueda leer. Cuando solicita openid y otros ámbitos de OIDC como profile, email y phone, el contenido del token de ID y la respuesta userInfo se limitan a las restricciones de los ámbitos adicionales.

Por ejemplo, una solicitud a Autorizar punto de conexión con el parámetro scope=openid+email devuelve un token de ID con sub, email y email_verified. El token de acceso de esta solicitud devuelve los mismos atributos de El punto de conexión userInfo. Una solicitud con un parámetro scope=openid devuelve todos los atributos legibles por el cliente del token de ID y de userInfo.

profile

Autoriza todos los atributos de usuario que el cliente de la aplicación puede leer.

correo electrónico

Autoriza los atributos de usuario email y email_verified. Amazon Cognito devuelve email_verified si se ha establecido un conjunto de valores de forma explícita.

phone

Autoriza los atributos de usuario phone_number y phone_number_verified.

Acerca de los servidores de recursos

Una API de servidor de recursos puede conceder acceso a la información de una base de datos o controlar los recursos de TI. Un token de acceso de Amazon Cognito puede autorizar el acceso a las API compatibles con OAuth 2.0. Las API de REST de Amazon API Gateway tienen soporte integrado para obtener autorización con los tokens de acceso de Amazon Cognito. Su aplicación pasa el token de acceso de la llamada a API al servidor de recursos. El servidor de recursos inspecciona el token de acceso para determinar si debe conceder acceso.

Amazon Cognito podría realizar actualizaciones futuras del esquema de tokens de acceso al grupo de usuarios. Si su aplicación analiza el contenido del token de acceso antes de pasarlo a una API, debe diseñar el código para que acepte actualizaciones del esquema.

Usted define los ámbitos personalizados, que amplían las capacidades de autorización de un grupo de usuarios para incluir fines no relacionados con la consulta y modificación de usuarios y sus atributos. Por ejemplo, si tiene un servidor de recursos para fotos, podría definir dos ámbitos: photos.read para el acceso de lectura a las fotos y photos.write para write/delete el acceso. Puede configurar una API para aceptar los tokens de acceso para autorización y la concesión de solicitudes de HTTP GET para acceder a los tokens con photos.read en la reclamación de scope y solicitudes de HTTP POST a tokens con photos.write. Estos son ámbitos personalizados.

nota

El servidor de recursos debe verificar la firma del token de acceso y la fecha de vencimiento antes de procesar las notificaciones del token. Para obtener más información sobre la verificación de tokens, consulte Verificación de tokens web JSON. Para obtener más información sobre la verificación y utilización de tokens de grupos de usuarios en Amazon API Gateway, consulte el blog Integración de grupos de usuarios de Amazon Cognito con API Gateway. API Gateway es una buena opción para inspeccionar tokens de acceso y proteger sus recursos. Para obtener más información sobre los autorizadores de Lambda de API Gateway, consulte Uso de autorizadores Lambda de API Gateway.

Descripción general de

Con Amazon Cognito, puede crear Servidores de recursos de OAuth 2.0 y asociar Ámbitos personalizados con ellos. Los ámbitos personalizados de un token de acceso autorizan acciones específicas en la API. Puede autorizar a cualquier cliente de aplicación del grupo de usuarios a emitir ámbitos personalizados desde cualquiera de los servidores de recursos. Asocie los ámbitos personalizados con un cliente de la aplicación y solicite esos ámbitos en las adjudicaciones de código de autorización OAuth2.0, las adjudicaciones implícitas y las adjudicaciones de credenciales de cliente de Punto de conexión de token. Amazon Cognito agrega ámbitos personalizados a la reclamación de scope en un token de acceso. Un cliente puede utilizar el token de acceso en su servidor de recursos, lo que hace que la decisión de conceder la autorización se base en los ámbitos presentes en el token. Para obtener más información acerca del ámbito de aplicación de tokens de acceso, consulte Uso de tokens con grupos de usuarios.

Descripción general del flujo de un servidor de recursos. El cliente solicita una concesión con un alcance personalizado, el grupo de usuarios devuelve un token de acceso con el ámbito personalizado y el cliente presenta el token de acceso a una API.

Para obtener un token de acceso con ámbitos personalizados, su aplicación debe enviar una solicitud al Punto de conexión de token para canjear un código de autorización o solicitar una concesión de credenciales de cliente. En el inicio de sesión administrado, también puede solicitar ámbitos personalizados en un token de acceso a partir de una concesión implícita.

nota

Porque están diseñadas para la autenticación interactiva con personas con el grupo de usuarios como IdP InitiateAuth, AdminInitiateAuthy las solicitudes solo producen scope un reclamo en el token de acceso con el valor único. aws.cognito.signin.user.admin

Administrar el servidor de recursos y los ámbitos personalizados

Al crear un servidor de recursos, debe proporcionar un nombre y un identificador de servidor de recursos. Por cada ámbito que cree en el servidor de recursos, debe proporcionar un nombre y una descripción.

  • Nombre de servidor de recursos: un nombre sencillo para el servidor de recursos, como Solar system object tracker o Photo API.

  • Identificador de servidor de recursos: un identificador único para el servidor de recursos. El identificador es cualquier nombre que quiera asociar a su API, por ejemplo, solar-system-data. Puede configurar identificadores más largos, como https://solar-system-data-api.example.com como una referencia más directa a las rutas URI de la API, pero las cadenas más largas aumentan el tamaño de los tokens de acceso.

  • Nombre del ámbito: el valor que quiere en las reclamaciones del scope. Por ejemplo, sunproximity.read.

  • Descripción: una descripción sencilla del ámbito. Por ejemplo, Check current proximity to sun.

Amazon Cognito puede incluir ámbitos personalizados en los tokens de acceso para cualquier usuario, ya sea local del grupo de usuarios o federado con un proveedor de identidades de terceros. Puede elegir ámbitos para los tokens de acceso de sus usuarios durante los flujos de autenticación con el servidor de autorización OAuth 2.0 que incluye el inicio de sesión administrado. La autenticación del usuario debe comenzar en Autorizar punto de conexión con scope como uno de los parámetros de la solicitud. A continuación, se presenta el formato recomendado para los servidores de recursos. Para un identificador, utilice un nombre fácil de usar para la API. Para un ámbito personalizado, utilice la acción que se autorice.

resourceServerIdentifier/scopeName

Por ejemplo, ha descubierto un nuevo asteroide en el cinturón de Kuiper y quiere registrarlo a través de su API solar-system-data. El ámbito que autoriza las operaciones de escritura en la base de datos de asteroides es asteroids.add. Cuando solicite el token de acceso que le autorizará a registrar su descubrimiento, formatee su parámetro de solicitud HTTPS scope como scope=solar-system-data/asteroids.add.

Eliminar un ámbito de un servidor de recursos no elimina su asociación con todos los clientes. En cambio, el ámbito está marcado inactivo. Amazon Cognito no agrega ámbitos inactivos para acceder a los tokens, sino que, por lo demás, continúa con normalidad si la aplicación solicita uno. Si vuelve a agregar el ámbito al servidor de recursos más adelante, Amazon Cognito lo vuelve a escribir en el token de acceso. Si solicita un ámbito que no ha asociado al cliente de la aplicación, independientemente de si lo ha eliminado del servidor de recursos del grupo de usuarios, se produce un error en la autenticación.

Puede usar la API o la Consola de administración de AWS CLI para definir los servidores de recursos y los ámbitos de su grupo de usuarios.

Definir un servidor de recursos para su grupo de usuarios (Consola de administración de AWS)

Puede usar el Consola de administración de AWS para definir un servidor de recursos para su grupo de usuarios.

Para definir un servidor de recursos
  1. Inicie sesión en la consola de Amazon Cognito.

  2. En el panel de navegación, elija User Pools (Grupos de usuarios), y elija el grupo de usuarios que desea editar.

  3. Seleccione el menú Dominio en Creación de marca y localice los Servidores de recursos.

  4. Elija Create a resource share (Crear un recurso compartido).

  5. Escriba unNombre del servidor de recursos. Por ejemplo, Photo Server.

  6. Escriba unIdentificadores de servidores de. Por ejemplo, com.example.photos.

  7. Ingrese los Custom scopes (Ámbitos personalizados) de sus recurso, por ejemplo, read y write.

  8. Para cada Scope name (Nombre de ámbito), escriba una Description (Descripción), por ejemplo, view your photos y update your photos.

  9. Seleccione Crear.

Los ámbitos personalizados se pueden revisar en el menú Dominio bajo Servidores de recursos, en la columna Ámbitos personalizados. Los ámbitos personalizados se pueden habilitar para clientes de aplicación desde el menú Clientes de aplicación, en Aplicaciones. Seleccione un cliente de aplicación, busque Páginas de inicio de sesión y elija Editar. AñadirÁmbitos personalizadosy eligeGuarde los cambios.

Definir un servidor de recursos para su grupo de usuarios (AWS CLIandAWSAPI)

Utilice los siguientes comandos para especificar la configuración del servidor de recursos para su grupo de usuarios.

Para crear un servidor de recursos
Para obtener información acerca de la configuración del servidor de recursos
Para mostrar información acerca de todos los servidores de recursos del grupo de usuarios
Eliminación de un servidor de recursos
Para actualizar la configuración de un servidor de recursos

Vinculación de recursos

Con la vinculación de recursos, también conocida como indicadores de recursos, puede solicitar API-specific concesiones al servidor de autorización de su grupo de usuarios. La vinculación de recursos es una extensión de OAuth 2.0 definida en RFC 8707, y permite a los clientes especificar explícitamente a qué servidor de recursos desean acceder durante las solicitudes de autorización. Con la vinculación de recursos, las configuraciones de la API pueden denegar el acceso a los tokens que no estén diseñados específicamente para ellos.

nota

Solo puede vincular los tokens de acceso a los recursos de los usuarios. No puede solicitar una vinculación de recursos con las credenciales de los clientes que concede M2M.

Al utilizar la vinculación de recursos con los grupos de usuarios de Amazon Cognito, los clientes pueden incluir un parámetro resource en sus solicitudes de autenticación al servidor de autorización del grupo de usuarios. Su grupo de usuarios valida que el valor del recurso solicitado es una URL y sigue las mismas reglas de esquema que las URL de devolución de llamadas de los clientes de aplicación: https://, http:// solo con localhost o un esquema personalizado, como myapp://. Amazon Cognito establece el URI solicitado como la audiencia en la reclamación aud del token de acceso. Si el recurso solicitado es un servidor de recursos de un grupo de usuarios, el identificador del servidor de recursos debe tener un formato de URL. Puede solicitar un recurso por cada solicitud de autenticación.

Esta característica está destinada a la autenticación del inicio de sesión administrado con el servidor de autorización OAuth 2.0 del grupo de usuarios. Puede solicitar la vinculación de recursos mediante concesiones implícitas y de códigos de autorización desde. Autorizar punto de conexión Token-refresh las subvenciones de la solicitud original se Punto de conexión de token transfieren de la aud solicitud original. Actualmente, no está disponible en los modelos de autenticación del SDK.

Implementación de la vinculación de recursos con grupos de usuarios de Amazon Cognito
  1. Configure uno o más servidores de recursos en su grupo de usuarios con identificadores únicos.

  2. En su solicitud de autorización a /oauth2/authorize, solicite un código de autorización o una concesión implícita e incluya el parámetro resource. El valor de resource debe ser un identificador del servidor de URL-formatted recursos o una URL. Por ejemplo, &resource=https://solar-system-data-api.example.com.

  3. El servidor de autorización valida la solicitud de recurso, completa la autenticación y establece la reclamación aud del token de acceso en la URL del recurso solicitado.

  4. Para validar que los tokens se emitieron específicamente para esta, el recurso que consume el token de acceso del usuario comprueba la reclamación aud.