

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.

# Tokens de actualización
<a name="amazon-cognito-user-pools-using-the-refresh-token"></a>

Puede utilizar el token de actualización para recuperar tokens de ID y de acceso nuevos. De forma predeterminada, el token de actualización vence 30 días después de que el usuario de la aplicación inicie sesión en el grupo de usuarios. Al crear una aplicación para el grupo de usuarios, puede utilizar cualquier valor comprendido entre 60 minutos y 10 años a fin de configurar el vencimiento del token de actualización de la aplicación. 

## Obtener nuevos tokens de acceso e identidad con un token de actualización
<a name="amazon-cognito-user-pools-using-the-refresh-token_initiate-token"></a>

Amazon Cognito emite tokens de actualización en respuesta a una autenticación correcta con el flujo de códigos de autorización de inicio de sesión administrado y con operaciones de API o métodos de SDK. El token de actualización devuelve nuevos tokens de ID y acceso y, si lo desea, un nuevo token de actualización. Puede utilizar tokens de actualización de las siguientes maneras.

**GetTokensFromRefreshToken**  
La operación de la [GetTokensFromRefreshToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetTokensFromRefreshToken.html)API emite nuevos identificadores y identificadores de acceso a partir de un token de actualización válido. También obtendrá un nuevo token de actualización si ha activado la rotación del token de actualización.

**InitiateAuth y AdminitiateAuth**  
Las [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)operaciones de la [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API incluyen el flujo `REFRESH_TOKEN_AUTH` de autenticación. En este flujo, se pasa un token de actualización y se obtienen tokens de ID y de acceso nuevos. No puede autenticarse con `REFRESH_TOKEN_AUTH` en los clientes de aplicación que tengan habilitada la [rotación del token de actualización](#using-the-refresh-token-rotation).

**OAuth punto final simbólico**  
El [punto de conexión del token](token-endpoint.md) de los grupos de usuarios con un [dominio](cognito-user-pools-assign-domain.md) tiene un tipo de concesión `refresh_token` que emite nuevos tokens de ID, acceso y, si lo desea (con la [rotación del token de actualización](#using-the-refresh-token-rotation)), de actualización, a partir de un token de actualización válido.

## Rotación de tokens de actualización
<a name="using-the-refresh-token-rotation"></a>

Si lo desea, puede configurar la rotación del token de actualización en el cliente de su aplicación. Con la rotación del token de actualización, su cliente puede invalidar el token de actualización original y emitir un nuevo token de actualización con cada actualización del token. Cuando esta configuración está habilitada, cada solicitud correcta, en todas las formas de actualización del token, devuelve un nuevo token de ID, acceso *y* actualización. Cuando esta configuración está deshabilitada, las solicitudes de actualización de los tokens solo devuelven nuevos tokens de acceso e ID, y el token de actualización original sigue siendo válido. El nuevo token de actualización es válido durante el tiempo restante del token de actualización original. Puede configurar los [clientes de aplicación](user-pool-settings-client-apps.md) para que roten los tokens de actualización o para que transfieran el token de actualización original. Para permitir los reintentos durante un período breve, también puede configurar un período de gracia para el token de actualización original de hasta 60 segundos.

**Cosas que debe saber acerca de la rotación de tokens de actualización**
+ Después de habilitar la rotación de tokens de actualización, se agregan nuevas reclamaciones en tokens web JSON desde su grupo de usuarios. Las notificaciones `origin_jti` y `jti` se agregan a los tokens de acceso e ID. Estas afirmaciones aumentan el tamaño del JWTs.
+ La rotación del token de actualización no es compatible con el flujo de autenticación `REFRESH_TOKEN_AUTH`. Para implementar la rotación de los tokens de actualización, debes inhabilitar este flujo de autenticación en el cliente de la aplicación y diseñar la aplicación para que envíe solicitudes de actualización de los tokens con la operación de la [GetTokensFromRefreshToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetTokensFromRefreshToken.html)API o el método del SDK equivalente.
+ Si la rotación de los tokens de actualización está inactiva, puede completar las solicitudes de actualización de los tokens con `GetTokensFromRefreshToken` o `REFRESH_TOKEN_AUTH`.
+ Cuando la función para [recordar dispositivos](amazon-cognito-user-pools-device-tracking.md) está activa en su grupo de usuarios, debe proporcionar la clave del dispositivo en las solicitudes `GetTokensFromRefreshToken`. Si su usuario no tiene una clave de dispositivo confirmada que la aplicación envíe en la solicitud de autenticación inicial, Amazon Cognito emitirá una nueva. Para actualizar los tokens en esta configuración, debe proporcionar una clave de dispositivo, tanto si especificó una en `AuthParameters` como si recibió una nueva en la respuesta de autenticación.
+ Puede pasar `ClientMetadata` al desencadenador de Lambda Antes de la generación del token en su solicitud `GetTokensFromRefreshToken`. Estos datos, que se transfieren al evento de entrada del desencadenador, proporcionan un contexto adicional que puede utilizar en la lógica personalizada de la función de Lambda.

Como práctica recomendada de seguridad, habilite la rotación de tokens de actualización en los clientes de sus aplicaciones.

------
#### [ Enable refresh token rotation (console) ]

El siguiente procedimiento activa o desactiva la rotación del token de actualización para el cliente de aplicación. Este procedimiento requiere un cliente de aplicación existente. Para obtener más información sobre cómo crear un cliente de aplicación, consulte [Ajustes específicos de una aplicación en los clientes de aplicación](user-pool-settings-client-apps.md).

**Cómo habilitar la rotación de tokens de actualización**

1. Vaya a la [consola de Amazon Cognito](https://console.aws.amazon.com/cognito/home). Si se te solicita, introduce tus credenciales. AWS 

1. Elija **User Pools** (Grupos de usuarios).

1. Elija en la lista un usuario existente.

1. Navegue hasta el menú **Clientes de aplicación** y seleccione un cliente de aplicación existente.

1. Seleccione **Editar** en la sección de **Información del cliente de aplicación** de la página.

1. En **Configuraciones de seguridad avanzadas**, busque la opción **Habilitar la rotación de tokens de actualización**.

1. Para habilitar la rotación, marque la casilla de verificación. Para deshabilitar la rotación, quite la selección en la casilla de verificación.

1. En **Período de gracia de rotación de tokens de actualización**, introduzca el número de segundos, hasta 60, que desee establecer como retraso antes de que se revoque el token de actualización rotado.

------
#### [ Enable refresh token rotation (API) ]

Configura la rotación del token de actualización en una solicitud de [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)API [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)o en una solicitud. El siguiente cuerpo parcial de la solicitud activa la rotación del token de actualización y establece el período de gracia en 10 segundos.

```
"RefreshTokenRotation" : {
   "Feature" : "ENABLED,
   "RetryGracePeriodSeconds" : 10
}
```

------

## Actualización de los tokens de API y SDK
<a name="using-the-refresh-token-api"></a>

Hay dos formas de usar el token de actualización para obtener un nuevo ID y acceder a los tokens con la API de grupos de usuarios, en función de si la rotación del token de actualización está activa o no. En los clientes de aplicaciones con la rotación del token de actualización activa, usa la operación [GetTokensFromRefreshToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetTokensFromRefreshToken.html)API. En los clientes de aplicaciones sin rotación del token de actualización, usa el `REFRESH_TOKEN_AUTH` flujo de las [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)operaciones de la [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API.

**nota**  
Los usuarios pueden autenticarse con grupos de usuarios en el inicio de [sesión gestionado](cognito-user-pools-managed-login.md) o en aplicaciones personalizadas que usted cree con AWS SDKs las operaciones de la API de Amazon Cognito. El flujo `REFRESH_TOKEN_AUTH` y `GetTokensFromRefreshToken` pueden completar la actualización del token para los usuarios con inicio de sesión administrado. La actualización de los tokens en las aplicaciones personalizadas no afecta a las sesiones de inicio de sesión administrado. Estas sesiones se configuran en una cookie del navegador y son válidas durante una hora. La respuesta a `GetTokensFromRefreshToken` emite tokens de ID, de acceso y, opcionalmente, de actualización, pero no renueva la cookie de sesión del inicio de sesión administrado.  
`REFRESH_TOKEN_AUTH` no está disponible en los clientes de aplicación con la rotación de los tokens de actualización habilitada.

------
#### [ GetTokensFromRefreshToken ]

[GetTokensFromRefreshToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetTokensFromRefreshToken.html)devuelve los nuevos identificadores, de acceso y de actualización de una solicitud que usted autorice con un token de actualización. A continuación, se muestra un ejemplo de cuerpo de solicitud para `GetTokensFromRefreshToken`. Puede enviar los metadatos del cliente a los desencadenadores de Lambda en las solicitudes de esta operación.

```
{
    "RefreshToken": "eyJjd123abcEXAMPLE",
    "ClientId": "1example23456789",
    "ClientSecret": "myappclientsecret123abc",
    "ClientMetadata": { 
      "MyMetadataKey" : "MyMetadataValue" 
   },
}
```

------
#### [ AdminInitiateAuth/InitiateAuth ]

Para usar el token de actualización cuando la rotación del token de actualización esté inactiva, usa las operaciones [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)o [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API. Pasar `REFRESH_TOKEN_AUTH` para el parámetro `AuthFlow`. En la propiedad `AuthParameters` de `AuthFlow`, pase el token de actualización del usuario como el valor de `"REFRESH_TOKEN"`. Amazon Cognito devuelve nuevos tokens de ID y acceso después de que la solicitud de API supera todos los desafíos.

A continuación, se muestra un ejemplo del cuerpo de una solicitud para una actualización de un token con la API `InitiateAuth` o `AdminInitiateAuth`.

```
{
    "AuthFlow": "REFRESH_TOKEN_AUTH",
    "ClientId": "1example23456789",
    "UserPoolId": "us-west-2_EXAMPLE",
    "AuthParameters": {
        "REFRESH_TOKEN": "eyJjd123abcEXAMPLE",
        "SECRET_HASH": "kT5acwCVrbD6JexhW3EQwnRSe6fLuPTRkEQ50athqv8="
    }
}
```

------

## OAuth actualización del token
<a name="using-the-refresh-token-oauth"></a>

También puede enviar los tokens de actualización a [Punto de conexión de token](token-endpoint.md) en un grupo de usuarios en el que haya configurado un dominio. En el cuerpo de la solicitud, incluya un valor `grant_type` de `refresh_token` y un valor `refresh_token` del token de actualización del usuario.

Las solicitudes al punto de conexión del token están disponibles en los clientes de aplicación con la rotación del token de actualización activa y en aquellos en los que está inactiva. Cuando la rotación del token de actualización está activa, el punto de conexión del token devuelve un nuevo token de actualización.

A continuación, se muestra un ejemplo de solicitud con un token de actualización.

```
POST /oauth2/token HTTP/1.1
Host: auth.example.com
Content-Type: application/x-www-form-urlencoded
Authorization: Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw
Content-Length: **

client_id=1example23456789&grant_type=refresh_token&refresh_token=eyJjd123abcEXAMPLE
```

## Revocación de los tokens de actualización
<a name="amazon-cognito-identity-user-pools-revoking-all-tokens-for-user"></a>

Puede revocar los tokens de actualización que pertenecen a un usuario. Para obtener más información acerca de la revocación de tokens, consulte [Finalización de las sesiones de usuario con la revocación del token](token-revocation.md). 

**nota**  
Al revocar el token de actualización, se revocarán todos los ID y tokens de acceso que Amazon Cognito emitió a partir de las solicitudes de actualización con ese token.

Para cerrar la sesión de los usuarios en todas las sesiones que hayan iniciado sesión actualmente, revoque todos sus tokens o solicitudes de API. [GlobalSignOut[AdminUserGlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUserGlobalSignOut.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GlobalSignOut.html) Cuando el usuario cierra sesión, se producen los siguientes efectos.
+ El token de actualización del usuario no puede obtener nuevos tokens para el usuario.
+ El token de acceso del usuario no puede realizar solicitudes de la API autorizadas por un token.
+ El usuario deberá volver a autenticarse para obtener tokens nuevos. Como las cookies de sesión del inicio de sesión administrado no caducan automáticamente, el usuario puede volver a autenticarse con una cookie de sesión, sin necesidad de solicitar credenciales adicionales. Después de cerrar la sesión de los usuarios con el inicio de sesión administrado, rediríjalos a [Punto de conexión Logout](logout-endpoint.md), donde Amazon Cognito borra su cookie de sesión.

Con los tokens de actualización, puede mantener las sesiones de los usuarios en la aplicación durante mucho tiempo. Con el tiempo, es posible que los usuarios deseen desautorizar algunas aplicaciones en las que han mantenido sesión iniciada con sus tokens de actualización. Para cerrar la sesión del usuario para una sola sesión, revoque el token de actualización. Cuando tu usuario quiera cerrar sesión en todas las sesiones autenticadas, genera una solicitud de API. [GlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GlobalSignOut.html) La aplicación puede ofrecer al usuario una opción como **Cerrar sesión en todos los dispositivos**. `GlobalSignOut` acepta un token de acceso válido inalterado, no caducado y no revocado de un usuario. Como esta API está autorizada por un token, un usuario no puede usarla para iniciar el cierre de sesión de otro usuario.

Sin embargo, puedes generar una solicitud de [AdminUserGlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUserGlobalSignOut.html)API que autorices con tus AWS credenciales para cerrar la sesión de cualquier usuario en todos sus dispositivos. La aplicación de administrador debe llamar a esta operación de API con las credenciales de AWS desarrollador y pasar como parámetros el ID del grupo de usuarios y el nombre de usuario del usuario. La API `AdminUserGlobalSignOut` puede cerrar la sesión de cualquier usuario del grupo de usuarios.

Para obtener más información sobre las solicitudes que puede autorizar con AWS credenciales o con un token de acceso de usuario, consulte[Lista de operaciones de API agrupadas por modelo de autorización](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth).