Flujo de token de actualización de aplicación híbrida OAuth 2.0
Utilice el flujo de token de actualización de aplicación híbrida de OAuth 2.0 para proporcionar a aplicaciones híbridas gestión directa de sesiones web cuando caduca una sesión inicial. Cuando el servidor que autoriza otorga un nuevo token de acceso utilizando el tipo de concesión híbrida_actualización, incluye los Id. de sesión (SID) de los dominios solicitados en su respuesta. La aplicación híbrida puede establecer cookies de dominio de contenido, Lightning y Visualforce y utilizar frontdoor.jsp para acortar el token de acceso en una sesión web, proporcionando servicio ininterrumpido. El flujo de token de actualización de la aplicación híbridas renueva los tokens de acceso emitidos por el servidor web OAuth 2.0, usuario-agente y flujo de token de aplicación híbrida.
Ediciones necesarias
| Disponible en: Salesforce Classic (no disponible en todas las organizaciones) y Lightning Experience |
| Disponible en: Todas las ediciones |
Cuando una aplicación híbrida (a través de una aplicación cliente externa) recibe un token de acceso, puede utilizar un token de actualización para obtener una nueva sesión cuando caduca su sesión actual. El valor de tiempo de espera de sesión de la aplicación cliente externa determina cuándo un token de acceso ya no es válido y cuándo solicitar uno nuevo utilizando un token de actualización.
Para una mejor seguridad, active la rotación de tokens de actualización en su aplicación cliente externa cuando configure sus parámetros de OAuth. Con este parámetro activado, la aplicación cliente externa 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.
invalid_grant cuando intenta solicitar un token.El flujo del token de actualización de aplicación híbrida incluye estos pasos.
- La aplicación 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 a la aplicación.
- La aplicación establece directamente los SID en las cookies de sesión de los dominios y acorta el acceso en una sesión web.
Solicitar un nuevo token de acceso
La aplicación puede utilizar el token de actualización para obtener un nuevo token de acceso enviando una solicitud POST de token de actualización al extremo de tokens de Salesforce.
La aplicación cliente externa puede enviar el client_id y el client_secret en el cuerpo de la solicitud POST del token de actualización, como se muestra aquí.
POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com/
grant_type=hybrid_refresh&
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. El formato de este esquema requiere los client_id y client_secret en el encabezado de autorización de la publicación: 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 de aplicación híbrida 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=hybrid_refresh&
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.Con cualquier formato de solicitud POST de token de actualización, incluya estos parámetros.
| Parámetro | Descripción |
|---|---|
client_id
|
La clave de consumidor de la aplicación cliente externa. Para acceder a la clave de consumidor, desde el Gestor de aplicación cliente externa, busque la aplicación cliente externa y seleccione Modificar configuración desde el menú desplegable. A continuación amplíe la sección Configuración de OAuth y haga clic en Clave y secreto de consumidor. A veces se le solicita verificar su identidad antes de poder ver la clave de consumidor. |
client_secret
|
El secreto de consumidor de la aplicación cliente externa. Para acceder al secreto de consumidor, desde el Gestor de aplicación cliente externa, busque la aplicación cliente externa y seleccione Modificar configuración desde el menú desplegable. A continuación amplíe la sección Configuración de OAuth y haga clic en Clave y secreto de consumidor. A veces se le solicita verificar su identidad antes de poder ver el secreto de consumidor. |
grant_type
|
El tipo de concesión de OAuth 2.0 que solicita la aplicación cliente externa. El valor debe ser hybrid_refresh 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 cliente externa está configurada con un ámbito de 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. 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":"web visualforce refresh_token lightning content",
"cookie-clientSrc":"10.xxx.xx.xx",
"sidCookieName":"sid",
"cookie-sid_Client":"0000000...",
"content_domain":"MyDomainName.file.force.com",
"content_sid":"00Dxx0000006Gb…",
"lightning_domain":"MyDomainName.lightning.force.com",
"lightning_sid”:”00Dxx000000…",
"csrf_token":"ABCD…",
"visualforce_domain":"MyDomainName.vf.force.com",
"visualforce_sid":"00Dxx000000…"}
Y este es un ejemplo de respuesta XML.
<Oauth>
<access_token>00Dx0000000BV7z!AR8AQP0jITN80ESEsj5EbaZTFG0RNB...</access_token>
<token_type>Bearer</token_type>
<scope>web visualforce refresh_token lightning content</scope>
<cookie-clientSrc>10.xxx.xx.xx</cookie-clientSrc>
<sidCookieName>sid</sidCookieName>
<cookie-sid_Client>0000000...</cookie-sid_Client>
<content_domain>MyDomainName.file.force.com</content_domain>
<content_sid>00Dxx0000006Gb…</content_sid>
<lightning_domain>MyDomainName.lightning.force.com</lightning_domain>
<lightning_sid>00Dxx000000…</lighning_sid>
<csrf_token>ABCD…</csrf_token>
<visualforce_domain>MyDomainName.vf.force.com</visualforce_domain>
<visualforce_sid>00Dxx000000…</visualforce_sid>
<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%21AR8AQP0jITN80ESEsj5E...&
token_type=Bearer&
instance_url=https%3A%2F%2FyourInstance.salesforce.com&
id=https://login.salesforce.com%2Fid%2F00Dx0000000BV7z%2F005x00000012Q9P&
issued_at=1278448101416&
signature=CMJ4l%2BCCaPQiKjoOEwEig9H4wqhpuLSk4J2...
cookie-clientSrc=10.xxx.xx.xx&
content_domain=MyDomainName.file.force.com&
content_sid=00Dxx0000006Gb...&
lightning_domain=MyDomainName.lightning.force.com&
lightning_sid=00Dxx000000...&
csrf_token=ABCD...&
visualforce_domain=MyDomainName.vf.force.com&
visualforce_sid=00Dxx000000...&
scope=web+visualforce+refresh_token+lightning+content&
sidCookieName=sid&
cookie-sid_Client=0000000...&
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 cliente externa utiliza para solicitar el acceso a un recurso protegido en nombre de la aplicación cliente. Pueden acompañar permisos adicionales en la forma de ámbitos al token de acceso. |
token_type
|
Un tipo de token Bearer, que se utiliza para todas las respuestas que influyen un token de acceso. |
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. |
content_domain
|
El dominio de la sesión de contenido, que se asigna al SID de contenido: Recibirá este valor solo si asigna el ámbito |
content_sid
|
El SID asociado con el dominio de la sesión de contenido. Salesforce devuelve un SID exclusivo que la aplicación híbrida establece directamente en la cookie de sesión del dominio. Recibirá este valor solo si asigna el ámbito |
lightning_domain
|
El dominio de la sesión Lightning, que se asigna al SID de Lightning: Recibirá este valor solo si asigna el ámbito |
lightning_sid
|
El SID asociado con el dominio de la sesión de Lightning. Salesforce devuelve un SID exclusivo que la aplicación híbrida establece directamente en la cookie de sesión del dominio. Recibirá este valor solo si asigna el ámbito |
visualforce_domain
|
El dominio de la sesión de Visualforce, que se asigna al SID de Visualforce: Recibirá este valor solo si asigna el ámbito |
visualforce_sid
|
El SID asociado con el dominio de la sesión de Visualforce. Salesforce devuelve un SID exclusivo que la aplicación híbrida establece directamente en la cookie de sesión del dominio. Recibirá este valor solo si asigna el ámbito |
csrf_token
|
El token de falsificación de petición en sitios cruzados (CSRF) para prevenir ataques durante sesiones secundarias. Recibirá este valor solo si asigna el ámbito |
scope
|
Los ámbitos asociados con el token de acceso. Los ámbitos definen más el tipo de recursos protegidos a los que el cliente puede acceder. Usted asigna ámbitos a una aplicación cliente externa cuando la crea, y se incluyen con los tokens de OAuth durante el flujo de autorización. Para consultar los parámetros válidos, vea Ámbitos de OAuth. |
sidCookieName
|
El nombre de la cookie de sesión que la aplicación híbrida utiliza para acortar directamente una sesión web. El valor predeterminado es sid. |
cookie-sid_Client
|
Una cookie de sesión que detecta y evita manipulación de sesión. Esta cookie de sesión permite a la aplicación híbrida acortar directamente una sesión web. |
cookie-clientSrc
|
Una cookie de sesión que se utiliza para protecciones de seguridad. Esta cookie de sesión permite a la aplicación híbrida acortar directamente una sesión web. |
parent_sid
|
Un SID asociado con la sesión de la interfaz de usuario principal del usuario. |
La aplicación establece SID de dominio y acorta el acceso a una sesión web
La aplicación híbrida establece los SID asociados del dominio en las cookies de sesión para acortar directamente una sesión web. Para obtener ejemplos de las cookies establecidas para cada dominio, consulte Gestión de cookies de flujo de aplicación híbrida OAuth 2.0.
Para implementaciones que están reestableciendo la división de usuario en objetos para la configuración Restablecer a división predeterminada en Inicio de sesión, la aplicación híbrida debe acortar una sesión web utilizando frontdoor.jsp. Para obtener más información, consulte Uso de Frontdoor.jsp para acortar sesiones en Salesforce. Para obtener más información acerca de divisiones de usuario, consulte Organizar datos con divisiones.

