Configuración específica de la aplicación con clientes de aplicaciones - 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.

Configuración específica de la aplicación con clientes de aplicaciones

Un cliente de la aplicación del grupo de usuarios es una configuración dentro de un grupo de usuarios que interactúa con una aplicación móvil o web que se autentica con Amazon Cognito. Los clientes de aplicaciones pueden llamar a API operaciones autenticadas y no autenticadas y leer o modificar algunos o todos los atributos de los usuarios. La aplicación se debe identificar ante el cliente de la aplicación en las operaciones para registrar, iniciar sesión y gestionar las contraseñas olvidadas. Estas API solicitudes deben incluir la autoidentificación con un ID de cliente de la aplicación y la autorización con un secreto de cliente opcional. Debe proteger cualquier cliente IDs o secreto de la aplicación para que solo las aplicaciones cliente autorizadas puedan realizar estas operaciones no autenticadas. Además, si configuras tu aplicación para que firme las API solicitudes autenticadas con AWS credenciales, debes proteger tus credenciales para que no las inspeccionen los usuarios.

Puede crear varias aplicaciones para un grupo de usuarios. Es posible que el cliente de una aplicación esté vinculado a la plataforma de código de una aplicación o a un inquilino independiente del grupo de usuarios. Por ejemplo, puede crear una aplicación para una aplicación del lado del servidor y una aplicación de Android diferente. Cada aplicación tiene su propio ID de cliente de aplicación.

Puede aplicar la configuración de las siguientes funciones del grupo de usuarios a nivel de cliente de la aplicación:

Tipos de cliente de aplicación

Al crear un cliente de aplicaciones en Amazon Cognito, puede rellenar previamente las opciones en función de los tipos de OAuth cliente estándar: cliente público y cliente confidencial. Configure un cliente confidencial con un secreto del cliente. Para obtener más información sobre los tipos de clientes, consulte IETFRFC6749 #2 .1.

Cliente público

Un cliente público se ejecuta en un navegador o en un dispositivo móvil. Debido a que no tiene recursos de confianza del lado del servidor, no incluye ningún secreto del cliente.

Cliente confidencial

Un cliente confidencial tiene recursos del lado del servidor en los que se puede confiar un secreto de cliente para operaciones no autenticadas. API Es posible que la aplicación se ejecute como un daemon o script de shell en el servidor backend.

Secreto del cliente

Un secreto de cliente, o contraseña de cliente, es una cadena fija que tu aplicación debe usar en todas las API solicitudes al cliente de la aplicación. El cliente de la aplicación debe tener un secreto del cliente para ejecutar concesiones de client_credentials. Para obtener más información, consulta IETFRFC6749 #2 .3.1.

No puede cambiar secretos del cliente después de crear una aplicación. Puede crear una nueva aplicación con un nuevo secreto si quiere rotar el secreto. También puede eliminar una aplicación para bloquear el acceso de aplicaciones que utilizan el ID de cliente de dicha aplicación.

Puede utilizar un cliente confidencial y un secreto del cliente con una aplicación pública. Usa un CloudFront proxy de Amazon para añadir un objeto SECRET_HASH en tránsito. Para obtener más información, consulte Proteger los clientes públicos de Amazon Cognito mediante un CloudFront proxy de Amazon en el AWS blog.

JSONtokens web

Los clientes de la aplicación Amazon Cognito pueden emitir tokens JSON web (JWTs) de los siguientes tipos.

Token de identidad (ID)

Una instrucción verificable de que su usuario está autenticado a partir de su grupo de usuarios. OpenID Connect (OIDC) agregó la especificación del token de identificación a los estándares de token de acceso y actualización definidos en la versión 2.0. OAuth El token de ID contiene información de identidad, como atributos de usuario, que su aplicación puede utilizar para crear un perfil de usuario y aprovisionar recursos. Para obtener más información, consulte Entender el token de identidad (ID).

Token de acceso

Una instrucción verificable de los derechos de acceso de su usuario. El token de acceso contiene ámbitos, una característica de la versión 2.0OIDC. OAuth Tu aplicación puede indicar los ámbitos de los recursos de back-end y demostrar que tu grupo de usuarios ha autorizado a un usuario o una máquina a acceder a los datos de un API usuario o a sus propios datos de usuario. Un token de acceso con ámbitos personalizados, a menudo procedente de una concesión de credenciales de cliente M2M, autoriza el acceso a un servidor de recursos. Para obtener más información, consulte Comprender el token de acceso.

Token de actualización

Una instrucción cifrada de autenticación inicial que su aplicación puede presentar a su grupo de usuarios cuando caduquen sus tokens de usuario. Una solicitud de actualización de token devuelve tokens de acceso e ID nuevos y no caducados. Para obtener más información, consulte Entender el token de actualización.

Puede establecer la caducidad de estos tokens para cada cliente de aplicación desde la pestaña Integración de aplicaciones de su grupo de usuarios en la consola de Amazon Cognito.

Condiciones de uso de la aplicación

Los siguientes términos son propiedades disponibles de los clientes de aplicación en la consola de Amazon Cognito.

Se permite la devolución de llamadas URLs

Una devolución de llamada URL indica a dónde se redirigirá al usuario después de iniciar sesión correctamente. Elige al menos una devolución de llamada. URL La devolución de llamada debeURL:

  • Ser absolutoURI.

  • Estar registrada previamente con un cliente.

  • No incluir un componente fragmento.

Consulte OAuth2.0: punto final de redireccionamiento.

Amazon Cognito requiere HTTPS sobre HTTP, excepto para http://localhost solo con fines de prueba.

También se admite la devolución de llamadas a aplicaciones URLs como myapp://example esta.

Se permite cerrar sesión URLs

Al cerrar sesión, se URL indica a dónde se redirigirá el usuario después de cerrar sesión.

Permisos de lectura y escritura de atributos

Su grupo de usuarios puede tener muchos clientes, cada uno con su propio cliente de aplicación y IdPs. Puede configurar su cliente de aplicación para que tenga acceso de lectura y escritura solo a los atributos de usuario que sean relevantes para la aplicación. En casos como la autorización machine-to-machine (M2M), no puedes conceder acceso a ninguno de tus atributos de usuario.

Consideraciones para la configuración de los permisos de lectura y escritura de atributos
  • Cuando crea un cliente de aplicación y no personaliza los permisos de lectura y escritura de atributos, Amazon Cognito concede permisos de lectura y escritura a todos los atributos del grupo de usuarios.

  • Puede conceder acceso de escritura a atributos personalizados inmutables. El cliente de su aplicación puede escribir valores en atributos inmutables al crear o registrar un usuario. Después de esto, no puede escribir valores en ningún atributo personalizado inmutable para el usuario.

  • Los clientes de aplicaciones deben tener acceso de escritura a los atributos requeridos de su grupo de usuarios. La consola de Amazon Cognito establece automáticamente los atributos requeridos para que se puedan escribir.

  • No puede permitir que un cliente de aplicaciones tenga acceso de escritura a email_verified o phone_number_verified. Un administrador de grupo de usuarios puede modificar estos valores. Un usuario solo puede cambiar el valor de estos atributos mediante la verificación de atributos.

Flujos de autenticación

Los métodos que el cliente de su aplicación permite para el inicio de sesión. Tu aplicación puede admitir la autenticación con nombre de usuario y contraseña, Secure Remote Password (SRP), la autenticación personalizada con activadores Lambda y la actualización del token. Como práctica de seguridad recomendada, usa la SRP autenticación como método de inicio de sesión principal. La interfaz de usuario alojada inicia sesión automáticamente con SRP los usuarios.

Ámbitos personalizados

Un ámbito personalizado es el que se define para un servidor de recursos propio en Resource Servers (Recursos de servidores). El formato es resource-server-identifier/scope. MiraÁmbitos, M2M y APIs con servidores de recursos.

Redirección predeterminada URI

Sustituye el redirect_uri parámetro en las solicitudes de autenticación de usuarios por otras de terceros IdPs. Configure esta configuración del cliente de la aplicación con el DefaultRedirectURI parámetro de una UpdateUserPoolClientAPIsolicitud CreateUserPoolCliento. También URL debe ser miembro del cliente CallbackURLs de tu aplicación. Amazon Cognito redirige las sesiones autenticadas a esta dirección cuando: URL

  1. El cliente de su aplicación tiene un proveedor de identidad asignado y varias devoluciones de llamadas definidas. URLs Tu grupo de usuarios redirige las solicitudes de autenticación al servidor de autorización al redireccionamiento predeterminado URI cuando no incluyen ningún parámetro. redirect_uri

  2. El cliente de la aplicación tiene un proveedor de identidad asignado y una devolución de llamada definida. URLs En este escenario, no es necesario definir una devolución de llamada URL predeterminada. Las solicitudes que no incluyen un redirect_uri parámetro se redirigen a la única devolución de llamada URL disponible.

Proveedores de identidades

Puedes elegir algunos o todos los proveedores de identidad externos (IdPs) de tu grupo de usuarios para autenticar a tus usuarios. Su cliente de aplicación también puede autenticar solo a los usuarios locales de su grupo de usuarios. Cuando agregue un IdP a su cliente de aplicación, podrá generar enlaces de autorización al IdP y mostrarlos en su página de inicio de sesión de la interfaz de usuario alojada. Puede asignar varios IdPs, pero debe asignar al menos uno. Para obtener más información sobre el uso de fuentes externas IdPs, consulteAgregar inicio de sesión de grupo de usuarios a través de un tercero.

Ámbitos de OpenID Connect

Elija uno o varios de los siguientes ámbitos OAuth para especificar los privilegios de acceso que se pueden solicitar para los tokens de acceso.

  • El ámbito de openid declara que desea recuperar un token de ID y un ID único de usuario. También solicita todos o algunos atributos de usuario, en función de los ámbitos adicionales de la solicitud. Amazon Cognito no devuelve un token de ID a menos que se solicite el ámbito openid. El ámbito de openid autoriza las reclamaciones de los token de ID estructurales, como la fecha de caducidad y el ID de clave y determina los atributos de usuario que se reciben en una respuesta de userInfo punto final.

    • Cuando openid es el único ámbito que solicita, Amazon Cognito rellena el token de ID con todos los atributos de usuario que el cliente de la aplicación actual pueda leer. La respuesta de userInfo a un token de acceso con este ámbito por sí solo devuelve todos los atributos del usuario.

    • Cuando solicita openid con otros ámbitos como phone, email o profile, el token de ID y userInfo devuelven el ID único del usuario y los atributos definidos por los ámbitos adicionales.

  • El ámbito phone concede acceso a las notificaciones phone_number y phone_number_verified. Este ámbito solo se puede solicitar con el ámbito openid.

  • El ámbito email concede acceso a las notificaciones email y email_verified. Este ámbito solo se puede solicitar con el ámbito openid.

  • El aws.cognito.signin.user.admin ámbito otorga acceso a los grupos de usuarios de Amazon Cognito, API operaciones que requieren tokens de acceso, como UpdateUserAttributesy. VerifyUserAttribute

  • El ámbito profile concede acceso a todos los atributos de usuario que el cliente puede leer. Este ámbito solo se puede solicitar con el ámbito openid.

Para obtener más información sobre los ámbitos, consulte la lista de ámbitos estándar OIDC.

OAuthtipos de subvenciones

Una OAuth concesión es un método de autenticación que recupera los tokens del grupo de usuarios. Amazon Cognito admite los siguientes tipos de concesiones. Para integrar estas OAuth subvenciones en tu aplicación, debes añadir un dominio a tu grupo de usuarios.

Concesión de código de autorización

La concesión de código de autorización genera un código que su aplicación puede intercambiar por tokens de grupo de usuarios con el Punto de conexión de token. Cuando intercambia un código de autorización, su aplicación recibe tokens de identificación, acceso y actualización. Este OAuth flujo, al igual que la concesión implícita, se produce en los navegadores de los usuarios. Una concesión de código de autorización es la concesión más segura que ofrece Amazon Cognito, porque los tokens no son visibles en las sesiones de sus usuarios. En su lugar, su aplicación genera la solicitud que devuelve los tokens y puede almacenarlos en caché en un almacenamiento protegido. Para obtener más información, consulte el código de autorización en IETFRFC6749 #1 .3.1

nota

Como práctica recomendada de seguridad en las aplicaciones de clientes públicos, active únicamente el OAuth flujo de concesión de códigos de autorización e implemente Proof Key for Code Exchange (PKCE) para restringir el intercambio de fichas. Con PKCE esta opción, un cliente solo puede intercambiar un código de autorización si ha proporcionado al terminal del token el mismo secreto que se presentó en la solicitud de autenticación original. Para obtener más informaciónPKCE, consulte IETFRFC7636.

Implicit grant (Concesión implícita)

La concesión implícita entrega un token de acceso y de ID, pero no de actualización, a la sesión del navegador de su usuario directamente desde el Autorizar punto de conexión. Una concesión implícita elimina el requisito de enviar una solicitud independiente al punto final del token, pero no es compatible con PKCE los tokens de actualización ni los devuelve. Esta concesión se adapta a los escenarios de prueba y a la arquitectura de las aplicaciones que no pueden completar las concesiones de códigos de autorización. Para obtener más información, consulta la sección Concesión implícita en IETFRFC6749 #1 .3.2. Puede activar tanto la concesión de código de autorización como la concesión implícita en un cliente de aplicación y, a continuación, utilizar cada concesión según sea necesario.

Concesión de credenciales de cliente

La concesión de credenciales de cliente es para comunicaciones machine-to-machine (M2M). Las concesiones de código de autorización e implícitas emiten tokens a los usuarios humanos autenticados. Las credenciales del cliente otorgan una autorización basada en el alcance de un sistema no interactivo a un. API Su aplicación puede solicitar las credenciales del cliente directamente desde el punto de conexión del token y recibir un token de acceso. Para obtener más información, consulte Credenciales de cliente en IETFRFC6749 #1 .3.4. Solo puede activar concesiones de credenciales de cliente en clientes de aplicación que tengan un secreto de cliente y que no admitan concesiones de código de autorización o implícitas.

nota

Debido a que no invoca el flujo de credenciales de cliente como usuario, esta concesión solo puede agregar ámbitos personalizados a los tokens de acceso. Un ámbito personalizado es el que se puede definir para un servidor de recursos propio. Los ámbitos predeterminados como openid y profile no se aplican a los usuarios no humanos.

Dado que los tokens de ID son una validación de los atributos de usuario, no son relevantes para la comunicación M2M, y un cliente de concesión de credenciales no los emite. Consulte Ámbitos, M2M y APIs con servidores de recursos.

La concesión de credenciales de cliente añade costes a su factura. AWS Para obtener más información, consulte Precios de Amazon Cognito.

Creación de un cliente de aplicación

AWS Management Console
Para crear un cliente de aplicación (consola)
  1. Vaya a la consola de Amazon Cognito. Si se le solicita, introduzca sus AWS credenciales.

  2. Elija User Pools (Grupos de usuarios).

  3. Elija un grupo de usuarios existente en la lista o cree un grupo de usuarios.

  4. Seleccione la pestaña App integration (Integración de aplicaciones).

  5. En App clients (Clientes de aplicaciones), seleccione Create an app client (Crear un cliente de aplicación).

  6. Seleccione unaApp type:Cliente público,Cliente confidencial, o bienOtro.

  7. Ingrese un nombre de cliente de aplicación.

  8. Elija Generar un secreto de cliente para que Amazon Cognito genere un secreto de cliente para usted. Los secretos de cliente suelen asociarse a clientes confidenciales.

  9. Seleccione los Authentication flows (Flujos de autenticación) que quiera permitir en su cliente de aplicaciones.

  10. Configure la Authentication flow session duration (Duración de la sesión de flujo de autenticación). Esta es la cantidad de tiempo que tienen los usuarios para completar cada desafío de autenticación antes de que caduque el token de sesión.

  11. (Opcional) Si desea configurar la caducidad del token, siga los pasos que se describen a continuación:

    1. Especifique el vencimiento del token de actualización para la aplicación. El valor predeterminado es 30 días. Puede cambiarlo por cualquier valor comprendido entre 1 hora y 10 años.

    2. Especifique el Access token expiration (Vencimiento del token de acceso) para el cliente de la aplicación. El valor predeterminado es de 1 hora. Puede cambiarlo por cualquier valor comprendido entre 5 minutos y 24 horas.

    3. Especifique el ID token expiration (Vencimiento del token de ID) para el cliente de la aplicación. El valor predeterminado es de 1 hora. Puede cambiarlo por cualquier valor comprendido entre 5 minutos y 24 horas.

      importante

      Si utiliza la IU alojada y configura la duración del token con menos de una hora, el usuario final podrá obtener nuevos tokens basados en la duración de su cookie de sesión, que, en este momento, está fijada en una hora.

  12. Elija si desea Enable token revocation (Habilitar revocación de tokens) para este cliente de aplicación. Esto aumentará el tamaño de los tokens que emite Amazon Cognito.

  13. Elija si desea Evitar errores de existencia de usuarios para este cliente de aplicaciones. Amazon Cognito responderá a las solicitudes de inicio de sesión de usuarios inexistentes con un mensaje genérico que indica que el nombre de usuario o la contraseña son incorrectos.

  14. Si desea utilizar la interfaz de usuario alojada con este cliente de aplicaciones, configure los Ajustes de la interfaz de usuario alojada.

    1. Introduce una o más devoluciones de llamada permitidas. URLs Estos son los sitios web o la aplicación a los URLs que desea que Amazon Cognito redirija a sus usuarios una vez que hayan completado la autenticación.

    2. Introduzca uno o más cierres de sesión URLs permitidos. Estos son los URLs que quieres que tu aplicación acepte en las solicitudes dirigidas a. Punto de conexión Logout

    3. Elija uno o más Proveedores de identidad con los que quiera que puedan iniciar sesión los usuarios en la aplicación. Puede elegir cualquier combinación de las existentes IdPs. Puede autenticar a los usuarios solo con su grupo de usuarios o con uno o más terceros IdPs que haya configurado en su grupo de usuarios.

    4. Elija los tipos de concesión OAuth 2.0 que desee que acepte el cliente de la aplicación.

      • Seleccione Concesión de códigos de autorización para transferir códigos a la aplicación que pueda canjearlos por tokens con Punto de conexión de token.

      • Seleccione Concesión implícita para transferir el ID y los tokens de acceso directamente a la aplicación. El flujo de concesiones implícitas expone los tokens directamente a los usuarios.

      • Seleccione Credenciales de cliente para transferir los tokens de acceso a la aplicación en función de su conocimiento no de las credenciales de usuario, sino del secreto del cliente. El flujo de concesión de credenciales del cliente se excluye mutuamente, con el código de autorización y los flujos de concesión implícitos.

    5. Elija los Ámbitos OpenID Connect que desea autorizar para usar con el cliente de aplicaciones. Puedes generar tokens de acceso solo con ese aws.cognito.signin.user.admin alcance a través de los grupos de usuariosAPI. Para obtener ámbitos adicionales, debe solicitar los tokens de acceso de Punto de conexión de token.

    6. Elija los Ámbitos personalizados que desea autorizar con el cliente de aplicaciones. Los ámbitos personalizados se utilizan con mayor frecuencia para autorizar el acceso a tercerosAPIs.

  15. Configure Permisos de lectura y escritura de atributos para este cliente de aplicaciones. El cliente de aplicaciones puede tener permiso para leer y escribir todo, un subconjunto limitado del esquema de atributos del grupo de usuarios.

  16. Elija Create app client (Crear cliente de aplicación).

  17. Anote el Id de cliente. Esto identificará al cliente de aplicación en las solicitudes de registro e inicio de sesión.

AWS CLI
aws cognito-idp create-user-pool-client --user-pool-id MyUserPoolID --client-name myApp
nota

Utilice el JSON formato de devolución de llamadas y cierre de sesión URLs para evitar que los traten como archivos CLI de parámetros remotos:

--callback-urls "["https://example.com"]" --logout-urls "["https://example.com"]"

Consulte la referencia de AWS CLI comandos para obtener más información: create-user-pool-client

Amazon Cognito user pools API

Genera una CreateUserPoolClientAPIsolicitud. Debe especificar un valor para todos los parámetros que no desee establecer en un valor predeterminado.

Actualizar un cliente de aplicación para un grupo de usuarios (AWS CLI y AWS API)

En el AWS CLI, introduzca el siguiente comando:

aws cognito-idp update-user-pool-client --user-pool-id "MyUserPoolID" --client-id "MyAppClientID" --allowed-o-auth-flows-user-pool-client --allowed-o-auth-flows "code" "implicit" --allowed-o-auth-scopes "openid" --callback-urls "["https://example.com"]" --supported-identity-providers "["MySAMLIdP", "LoginWithAmazon"]"

Si el comando se ejecuta correctamente, AWS CLI devuelve una confirmación:

{ "UserPoolClient": { "ClientId": "MyClientID", "SupportedIdentityProviders": [ "LoginWithAmazon", "MySAMLIdP" ], "CallbackURLs": [ "https://example.com" ], "AllowedOAuthScopes": [ "openid" ], "ClientName": "Example", "AllowedOAuthFlows": [ "implicit", "code" ], "RefreshTokenValidity": 30, "AuthSessionValidity": 3, "CreationDate": 1524628110.29, "AllowedOAuthFlowsUserPoolClient": true, "UserPoolId": "MyUserPoolID", "LastModifiedDate": 1530055177.553 } }

Consulte la referencia de AWS CLI comandos para obtener más información: update-user-pool-client.

AWS API: UpdateUserPoolClient

Obtener información sobre un cliente de aplicaciones para un grupo de usuarios (AWS CLI y AWS API)

aws cognito-idp describe-user-pool-client --user-pool-id MyUserPoolID --client-id MyClientID

Consulte la referencia de AWS CLI comandos para obtener más información: describe-user-pool-client.

AWS API: DescribeUserPoolClient

Listar toda la información del cliente de la aplicación en un grupo de usuarios (AWS CLI y AWS API)

aws cognito-idp list-user-pool-clients --user-pool-id "MyUserPoolID" --max-results 3

Consulte la referencia de AWS CLI comandos para obtener más información: list-user-pool-clients.

AWS API: ListUserPoolClients

Eliminar un cliente de aplicaciones de grupo de usuarios (AWS CLI y AWS API)

aws cognito-idp delete-user-pool-client --user-pool-id "MyUserPoolID" --client-id "MyAppClientID"

Consulte la referencia de AWS CLI comandos para obtener más información: delete-user-pool-client

AWS API: DeleteUserPoolClient