Autorización de alcances, M2M y API con 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.

Autorización de alcances, M2M y API con 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 más información, consulte Agregue un cliente de aplicaciones con la interfaz de usuario alojada. 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 figuran en la reclamación del token de acceso. scope Para obtener más información sobre las solicitudes de tokens de acceso a Amazon Cognito, consulte Uso del token de acceso.

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

Autorización M achine-to-machine (M2M)

Amazon Cognito admite aplicaciones que acceden a los datos de la API con identidades de máquinas. Las identidades de las máquinas de los grupos de usuarios son clientes confidenciales que se ejecutan en servidores de aplicaciones y se conectan a API remotas. Su funcionamiento se lleva a cabo sin la interacción del usuario: tareas programadas, flujos de datos o actualizaciones de activos. Cuando estos clientes autorizan sus solicitudes con un token de acceso, realizan la autorización de máquina a máquina (M2M). En la autorización M2M, un secreto compartido reemplaza las credenciales de usuario en el control de acceso.

Una aplicación que accede a una API con autorización M2M debe tener un ID de cliente y un secreto de cliente. En su grupo de usuarios, debe crear un cliente de aplicaciones que admita la concesión de credenciales de cliente. Para admitir las credenciales de los clientes, el cliente de la aplicación debe tener un secreto de cliente y usted debe tener un dominio de grupo de usuarios. En este flujo, la identidad de su máquina solicita un token de acceso directamente desdePunto 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 sobre la configuración de los clientes de aplicaciones, consulteClientes de aplicación de grupo de usuarios.

El token de acceso que se obtiene al conceder las credenciales de un cliente es una declaración verificable de las operaciones que quieres permitir que la identidad de tu máquina solicite desde una API. Para obtener más información sobre cómo los tokens de acceso autorizan las solicitudes de API, sigue leyendo. Para ver un ejemplo de aplicación, consulte Autorización de máquina a máquina basada en Amazon Cognito y API Gateway mediante AWS CDK.

La autorización M2M tiene un modelo de facturación que difiere de la forma en que se factura a los usuarios activos mensuales (MAU). Si bien la autenticación de los usuarios conlleva un coste por usuario activo, la facturación M2M refleja las credenciales de los clientes activos, los clientes de aplicaciones y el volumen total de solicitudes de fichas. Para obtener más información, consulte Precios de Amazon Cognito. Para controlar los costes de la autorización M2M, optimice la duración de los tokens de acceso y el número de solicitudes de token que realizan sus aplicaciones. Consulte Almacenamiento en caché de tokens para ver una forma de utilizar el almacenamiento en caché de API Gateway para reducir las solicitudes de nuevos tokens en la autorización 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 los costos de

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 por los grupos de usuarios, los ámbitos personalizados y los ámbitos estándar.

Ámbito de API reservado para los grupos de usuarios

El ámbito aws.cognito.signin.user.admin autoriza a la API de grupos de usuarios de Amazon Cognito. Autoriza al portador de un token de acceso a consultar y actualizar toda la información sobre un usuario de un grupo de usuarios mediante, por ejemplo, las operaciones de la API GetUsery UpdateUserAttributesla API. 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 Punto de conexión de 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 estándar

Cuando autentique a los usuarios con el servidor de autorización OAuth 2.0 del grupo de usuarios, incluso con la interfaz de usuario alojada, deberá 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 estándar de OAuth 2.0 autorizan a su aplicación a leer la información de usuario del Punto de conexión de 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 la aplicación a emitir tokens de acceso con los siguientes ámbitos estándar de OAuth 2.0.

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 estándar como profile, email y phone, el contenido del token de ID y la respuesta de 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 Punto de conexión de 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.

email

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, este puede definir dos ámbitos: photos.read para el acceso de lectura a las fotos y photos.write para el acceso de escritura y eliminación. 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 un JSON Web Token. 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.

Información general

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 la IU alojada, 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 la interfaz de usuario alojada. 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 AWS Management Console CLI para definir los servidores de recursos y los ámbitos de su grupo de usuarios.

Definir un servidor de recursos para el grupo de usuarios (AWS Management Console)

Puede utilizarla AWS Management Console 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 Manage your User Pools (Administrar sus grupos de usuarios) y elija el grupo de usuarios que desea editar.

  3. Elija el iconoIntegración de aplicacionestab y localizarServidores 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 elIntegración de aplicacionespestaña debajoServidores de recursos, en elÁmbitos personalizadoscolumn. Los ámbitos personalizados se pueden habilitar para clientes de aplicaciones desde elIntegración de aplicacionespestaña debajoClientes de aplicaciones. Seleccione un cliente de aplicación, localiceConfiguración de IU alojaday eligeEditar. AñadirÁmbitos personalizadosy eligeGuarde los cambios.

Definir un servidor de recursos para su grupo de usuarios (AWS CLI y AWS API)

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
Para eliminar un servidor de recursos
Para actualizar la configuración de un servidor de recursos