Flujo de token de actualización de OAuth 2.0 para sesiones renovadas
El flujo del token de actualización de OAuth 2.0 renueva los tokens de acceso emitidos por el flujo de servidor web de OAuth 2.0 o el flujo de usuario-agente de OAuth 2.0.
Ediciones necesarias
| Disponible en: Salesforce Classic (no disponible en todas las organizaciones) y Lightning Experience |
| Disponible en: Todas las ediciones |
Consulte Las nuevas aplicaciones conectadas ya no se pueden crear en Spring ā26 para obtener mĆ”s detalles.
Después de que un cliente (a través de una aplicación conectada) reciba un token de acceso, puede utilizar un token de actualización para obtener una nueva sesión cuando caduca su sesión vigente. El valor de tiempo de espera de sesión de la aplicación conectada determina el momento en que un token de acceso deja de ser vÔlido y cuÔndo solicitar uno nuevo empleando un token de actualización.
Para tener mayor seguridad, active la rotación del token de actualización en su aplicación conectada o aplicación cliente externa cuando configure sus parÔmetros de OAuth. Con esta configuración activada, la aplicación conectada emite un nuevo token de actualización junto con el token de acceso cada vez que se invoca el flujo. El token de actualización anterior se invalida automÔticamente. La rotación del token de actualización garantiza que cada token de actualización se utilice solo una vez por usuario, de modo que los tokens de actualización no se pueden utilizar para obtener tokens de acceso nuevos. Si alguien intenta utilizar un token de actualización que se cerró, Salesforce invalida el token de actualización actual y cualquier token de acceso asociado. Para obtener un nuevo token de actualización, el cliente debe completar un nuevo flujo.
El flujo del token de actualización incluye estos pasos.
- El aplicación conectada utiliza el token de actualización existente para solicitar un nuevo token de acceso.
- DespuƩs de verificar la solicitud, Salesforce otorga un nuevo token de acceso al cliente.
Solicitar un token de acceso actualizado
Una aplicación conectada puede utilizar el token de actualización para obtener un nuevo token de acceso enviando una de estas solicitudes POST de tokens de actualización al extremo de tokens de Salesforce.
La aplicación conectada puede enviar client_id y client_secret en el cuerpo de la solicitud POST de token de actualización, como se muestra aquĆ.
POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com/
grant_type=refresh_token&
client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82HnFVVX19KY1uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE&client_secret=1955279925675241571&
refresh_token=your token here En lugar de enviar credenciales de cliente como parÔmetros en el cuerpo de la solicitud POST de token de actualización, puede utilizar el esquema de autenticación bÔsico de HTTP. Este formato de esquema requiere client_id y client_secret en el encabezado de autorización de la publicación de la siguiente forma:
Authorization: Basic64Encode(client_id:secret)
client_id y client_secret se separan con un punto (:). Para obtener mÔs información, consulte Marco de autorización OAuth 2.0.
Este ejemplo muestra una solicitud POST de token de actualización que utiliza el esquema de autenticación HTTP bÔsica en lugar de enviar credenciales de cliente en el cuerpo de la solicitud POST.
POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com
Authorization: Basic
client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82HnFVVX19KY1uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE&
client_secret=1955279925675241571
grant_type=refresh_token&
refresh_token=your token here client_id y client_secret se envĆan en el cuerpo de POST, se ignora el encabezado de autorización.Evite enviar solicitudes simultĆ”neas que contengan el mismo token de actualización. Si su cliente envĆa solicitudes idĆ©nticas al mismo tiempo, algunas de las solicitudes fallan de forma intermitente y la columna Estado en el Historial de inicio de sesión muestra Error: La solicitud de token ya se estĆ” procesando. En vez de enviar continuamente solicitudes para nuevos tokens de acceso, almacene en cachĆ© y reutilice tokens en su lugar. Si envĆa solicitudes simultĆ”neas con el mismo token de actualización, que no se recomienda, desarrolle una forma de reintentar las solicitudes cuando se produzca este error.
Con cualquier formato de solicitud POST de token de actualización, incluya estos parÔmetros.
| ParÔmetro | Descripción |
|---|---|
client_id
|
Haga clic en la clave de consumidor de la aplicación conectada. Para acceder a la clave de consumidor, desde el Gestor de aplicaciones, busque la aplicación conectada y seleccione Ver desde el menú desplegable. A continuación haga clic en Gestionar detalles de consumidor. A veces se le solicita verificar su identidad antes de poder ver la clave de consumidor. |
client_secret
|
Haga clic en el secreto de consumidor de la aplicación conectada. Para acceder al secreto de consumidor, desde el Gestor de aplicaciones, busque la aplicación conectada y seleccione Ver desde el menú desplegable. A continuación haga clic en Gestionar detalles de consumidor. A veces se le solicita verificar su identidad antes de poder ver el secreto de consumidor. |
grant_type
|
El tipo de otorgamiento de OAuth 2.0 que solicita la aplicación conectada. El valor debe ser refresh_token para este flujo. |
refresh_token
|
Token obtenido del servidor web, usuario-agente o flujo de token de aplicación hĆbrida. Se trata de un valor secreto. Tome las medidas apropiadas para protegerlo. Este parĆ”metro solo se devuelve si su aplicación conectada se configura con un Ć”mbito refresh_token. |
client_assertion
|
En vez de pasar client_secret, puede proporcionar client_assertion y client_assertion_type. Si no se proporciona un parƔmetro client_secret, Salesforce comprueba si hay client_assertion y client_assertion_type. Consulte Utilizar client_assertion en vez de client_secret. |
client_assertion_type
|
Proporcione este valor cuando utilice el parƔmetro El valor |
format
|
Si no se incluye en el encabezado de la solicitud, puede especificar el formato de devolución esperado. El parÔmetro
|
Salesforce otorga un nuevo token de acceso
DespuĆ©s de verificar la solicitud, Salesforce envĆa una respuesta con un nuevo token de acceso a la aplicación conectada.
A continuación se incluye un ejemplo de respuesta JSON procedente de Salesforce.
{
"id":"https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P",
"issued_at":"1278448384422",
"instance_url":"https://yourInstance.salesforce.com/",
"signature":"SSSbLO/gBhmmyNUvN18ODBDFYHzakxOMgqYtu+hDPsc=",
"access_token":"00Dx0000000BV7z!AR8AQP0jITN80ESEsj5EbaZTFG0RNBaT1cyWk7TrqoDjoNIWQ2ME_sTZzBjfmOE6zMHq6y8PIW4eWze9JksNEkWUl.Cju7m4",
"token_type":"Bearer",
"scope":"id api refresh_token"
}Y este es un ejemplo de respuesta XML.
<Oauth>
<access_token>00Dx0000000BV7z!AR8AQP0jITN80ESEsj5EbaZTFG0RNB
aT1cyWk7TrqoDjoNIWQ2ME_sTZzBjfmOE6zMHq6y8PIW4eWze9JksNEkWUl.Cju7m4
</access_token>
<token_type>Bearer
</token_type>
<scope>id api refresh_token
</scope>
<instance_url>https://yourInstance.salesforce.com/</instance_url>
<id>https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P</id>
<issued_at>1278448101416</issued_at>
<signature>CMJ4l+CCaPQiKjoOEwEig9H4wqhpuLSk4J2urAe+fVg=</signature>
</Oauth>Este ejemplo muestra una respuesta codificada con URL.
access_token=00Dx0000000BV7z%21AR8AQP0jITN80ESEsj5EbaZTFG0RNBaT1cyWk7TrqoDjoNIWQ2
ME_sTZzBjfmOE6zMHq6y8PIW4eWze9JksNEkWUl.Cju7m4
&token_type=Bearer&scope=id%20api%20refresh_token
&instance_url=https%3A%2F%2FyourInstance.salesforce.com
&id=https://login.salesforce.com%2Fid%2F00Dx0000000BV7z%2F005x00000012Q9P
&issued_at=1278448101416
&signature=CMJ4l%2BCCaPQiKjoOEwEig9H4wqhpuLSk4J2urAe%2BfVg%3DSi la rotación del token de actualización estÔ activada para la aplicación conectada o la aplicación cliente externa, la respuesta incluye un nuevo token de actualización. A continuación se incluye un ejemplo de respuesta JSON si la rotación del token de actualización estÔ activada.
{
"access_token":"00Dx0000000BV7z!AR8AQP0jITN80ESEsj5EbaZTFG0RNBaT1cyWk7T...",
"refresh_token":"CjAwRHgwMDAwMDAwQlY3eiFBUjhBUVAwaklUTjgwRVNFc2o1RWJhWl...",
"signature":"SSSbLO/gBhmmyNUvN18ODBDFYHzakxOMgqYtu+hDPsc=",
"scope":"id api refresh_token",
"instance_url":"https://yourInstance.salesforce.com/",
"id":"https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P"
"token_type":"Bearer",
"issued_at":"1278448384422",
}Los siguientes parƔmetros pueden incluirse en el cuerpo de la respuesta.
| ParÔmetro | Descripción |
|---|---|
access_token
|
Token de OAuth que una aplicación conectada utiliza para solicitar el acceso a un recurso protegido en nombre de una aplicación cliente. Pueden acompañar permisos adicionales en la forma de Ômbitos al token de acceso. |
refresh_token
|
Un nuevo token de actualización. Utilice el token de actualización para obtener un nuevo token de acceso la próxima vez que invoque el flujo de token de actualización. Este parÔmetro solo se incluye si activa la rotación de tokens de actualización para su aplicación conectada o aplicación cliente externa. |
token_type
|
Un tipo de token Bearer, que se utiliza para todas las respuestas que influyen un token de acceso. |
token_format
|
Si su aplicación conectada o aplicación cliente externa estÔ activada para emitir tokens de acceso basados en tokens web JSON (JWT), su respuesta incluye este parÔmetro para indicar el formato del token de acceso. El valor es Este parÔmetro no se incluye si su aplicación emite tokens de acceso opacos. |
instance_url
|
Una URL que indica la instancia de la organización del usuario. Por ejemplo: https://yourInstance.salesforce.com/. |
id
|
Una URL de identidad que se puede utilizar para identificar al usuario y para consultar con el fin de obtener mÔs información acerca del usuario. Consulte URL de identidad. |
issued_at
|
Marca de tiempo del momento de creación de la firma en milisegundos. |
signature
|
Firma HMAC-SHA256 con codificación Base64 firmada con client_secret. La firma puede incluir el Id. concatenado y issued_at value, que puede utilizar para verificar que la URL de identidad no cambió desde que la envió el servidor. |
sfdc_site_url
|
Si el usuario es un miembro de un sitio de Experience Cloud, se proporciona la URL del sitio. |
sfdc_site_id
|
Si el usuario es un miembro de un sitio de Experience Cloud, se proporciona el Id. de sitio del usuario. |

