Flujo servidor web de OAuth 2.0 para la integración de aplicaciones web
Para integrar una aplicación web externa con la API de Salesforce, utilice el flujo servidor web de OAuth 2.0, que implementa el tipo de otorgamiento de código de autorización de OAuth 2.0. Con este flujo, el servidor que aloja la pÔgina web debe ser capaz de proteger la identidad de la aplicación conectada, definida por el Id. del cliente y el secreto de cliente.
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.
Recomendamos que utilice el flujo de servidor web con Clave de prueba para Code for Exchange (PKCE, pronosticado pixi) en lugar del flujo usuario-agente o el flujo nombre de usuario-contraseƱa para escenarios especiales. Utilice los parĆ”metros code_challenge y code_verifier para implementar PKCE con el flujo de servidor web. Para obtener mĆ”s información sobre PKCE, consulte Grupo de tareas de ingenierĆa de Internet (IETF.). TambiĆ©n recomendamos que bloquee todas las aplicaciones conectadas utilizando el flujo usuario-agente. Para los pasos, consulte Bloquear flujos de autorización para mejorar la seguridad.
Este es un caso de uso de ejemplo para implementar el flujo servidor web. Recientemente desarrolló un servicio web que permite el acceso seguro al estado de pedidos de clientes. Los datos de estado del pedido se almacenan de forma segura en su plataforma de CRM de Salesforce. Para autorizar a los usuarios del Centro de ayuda a ver el estado del pedido de un cliente, desarrolla una aplicación Estado de pedido y la configura como una aplicación conectada con el flujo del servidor web.
- Un usuario del Centro de ayuda hace clic en la aplicación web Estado de pedido.
- La aplicación conectada publica una solicitud de código de autorización en el extremo de autorizaciones de Salesforce.
- Se redirige al usuario a la pÔgina de inicio de sesión de Salesforce. Después de un inicio de sesión satisfactorio, se solicita al usuario que apruebe el acceso de la aplicación a los datos del estado del pedido.
- DespuĆ©s de que el usuario apruebe que la aplicación Estado de pedido acceda a los datos, Salesforce envĆa una devolución de llamada a la aplicación Estado de pedido con un código de autorización.
- La aplicación Estado de pedido pasa el código de autorización al extremo de tokens de Salesforce, solicitando un token de acceso.
- Salesforce valida el código de autorización y envĆa de vuelta un token de acceso que incluye permisos asociados en la forma de Ć”mbitos.
- La aplicación Estado de pedido envĆa una solicitud de vuelta a Salesforce para acceder a los datos de estado del pedido. La solicitud incluye el token de acceso con los Ć”mbitos asociados.
- Salesforce valida el token de acceso y los Ɣmbitos asociados.
- La aplicación Estado de pedido puede acceder a los datos protegidos, y el estado del pedido del cliente se muestra en la aplicación.
Nota Si el token d acceso deja de ser vÔlido, la aplicación conectada puede utilizar un token de actualización para obtener un nuevo token de acceso.
Echemos un vistazo con detalle a cada paso de este flujo de autorización.
- Solicitar un código de autorización
- El usuario autentica y autoriza el acceso
- Salesforce otorga el código de autorización
- Solicitar un token de acceso
- Salesforce otorga un token de acceso
Solicitar un código de autorización
Para iniciar el flujo de servidor web de OAuth 2.0, el servicio web externo (a través de la aplicación conectada), publica una solicitud de código de autorización empleando el tipo de otorgamiento de código de autorización al extremo de autorizaciones de Salesforce. Con un código de autorización, la aplicación conectada puede probar que fue autorizada como visitante seguro en el sitio y que tiene permiso para solicitar un token de acceso.
El código de autorización se realiza en la forma de un redireccionamiento HTTP.
https://MyDomainName.my.salesforce.com/services/oauth2/authorize?
client_id=3MVG9IHf89I1t8hrvswazsWedXWY0i1qK20PSFaInvUgLFB6vrcb9bbWFTSIHpO8G2jxBLJA6uZGyPFC5Aejq&
redirect_uri=https://www.mycustomerorderstatus.com/oauth2/callback&
response_type=codeIncluya estos parÔmetros en la solicitud del código de autorización.
| ParÔmetro | Descripción |
|---|---|
Request Header
|
El extremo de autorizaciones de OAuth 2.0 de Salesforce. Las aplicaciones conectadas envĆan solicitudes de autorización de OAuth a este extremo. |
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. |
redirect_uri
|
La URL donde se redirige a los usuarios después de una autenticación satisfactoria. El URI de redireccionamiento debe coincidir con uno de los valores del campo URL de devolución de llamada de la aplicación conectada. De lo contrario, la aprobación falla. Puede encontrar el URI de redireccionamiento en la pÔgina Gestionar aplicaciones conectadas de la aplicación conectada o en la definición de la aplicación conectada. Este valor debe tener codificación de URL. |
response_type
|
El tipo de otorgamiento de OAuth 2.0 que solicita la aplicación conectada. El valor para este flujo debe ser code para indicar que la aplicación conectada estÔ solicitando un código de autorización. |
También puede incluir estos parÔmetros en la solicitud del código de autorización.
| ParÔmetro | Descripción |
|---|---|
scope
|
Los permisos que definen el tipo de recursos protegidos a los que la aplicación conectada puede acceder. Usted asigna Ômbitos a una aplicación conectada cuando la construye, y se incluyen con los tokens de OAuth durante el flujo de autorización. Si no incluye este parÔmetro, se solicitan todos los Ômbitos asignados a la aplicación conectada. Los Ômbitos que se hayan pasado en este parÔmetro deben ser un subconjunto de los Ômbitos registrados. |
sso_provider
|
El nombre del desarrollador de un proveedor de identidad de inicio de sesión único (SSO) configurado con una URL de inicio de sesión de Mi dominio o una URL de sitio de Experience Cloud. Puede utilizar este parÔmetro para crear una experiencia de SSO que hace parecer que su aplicación estÔ integrada con el proveedor de SSO. Por ejemplo, puede utilizar este parÔmetro para ofrecer SSO en una implementación de Identidad desatendida. |
state
|
Cualquier estado que solicite el servicio web externo a la URL de devolución de llamadas. Este valor debe tener codificación de URL. |
immediate
|
Un valor booleano que determina si se solicita al usuario el inicio de sesión y la aprobación. El valor predeterminado es
La opción |
code_challenge
|
Especifica el valor de hash SHA256 del valor Este parƔmetro se requiere si se especifica
|
display
|
Cambia el tipo de visualización de las pÔginas de inicio de sesión y autorización. Salesforce admite estos valores:
|
login_hint
|
Proporciona un valor de nombre de usuario vÔlido para rellenar previamente la pÔgina de inicio de sesión con el nombre de usuario, como Para pasar el parÔmetro |
nonce
|
UtilĆcelo con el Ć”mbito openid para solicitar un token de Id. de usuario. El token de Id. de usuario se devuelve en la respuesta. Este parĆ”metro es opcional, pero ayuda a detectar ataques de repetición.
|
prompt
|
Especifica cómo el servidor de autorización solicita al usuario una reaprobación y reautenticación. Salesforce admite estos valores:
Puede pasar los valores |
Encabezado de Uvid-Hint |
Opcionalmente, para conectar este flujo al flujo de invitados desatendido, puede incluir un encabezado Si implementa el flujo de usuarios invitados en su aplicación, puede opcionalmente utilizar este encabezado para pasar en un token de acceso basado en Token web de JSON (JWT) que contenga un Id. de visitante exclusivo (UVID) vinculado a la identidad de un usuario invitado. Al pasar el UVID a un flujo de usuario nombrado, puede llevar información contextual desde una sesión de usuario invitado, como las preferencias de cookies del usuario, a una sesión de usuario nombrada. |
ParƔmetro de cuerpo uvid_hint |
Un valor En lugar de pasar el UVID en el cuerpo de la solicitud, tambiƩn puede pasarla en un token basado en JWT con un UVID a travƩs del encabezado |
El usuario autentica y autoriza el acceso
Antes de que Salesforce proporcione códigos de autorización a las aplicaciones conectadas, se solicita a los usuarios que se estÔn autenticando que inicien sesión en Salesforce.
Tras un inicio de sesión satisfactorio, Salesforce redirige a los usuarios a la pÔgina de aprobación para otorgar acceso a la aplicación.
Si los usuarios ya aprobaron el acceso, no es necesario volver a aprobar el acceso de nuevo.
Salesforce otorga el código de autorización
Después de que los usuarios aprueben el acceso a una aplicación conectada, Salesforce redirige a los usuarios a la URL de devolución de llamadas, donde pueden ver la devolución de llamada con un código de autorización.
https://www.mycustomerorderstatus.com/oauth2/callback?
code=aPrx4sgoM2Nd1zWeFVlOWveD0HhYmiDiLmlLnXEBgX01tpVOQMWVSUuafFPHu3kCSjzk4CUTZg==- La primera parte de la devolución de llamada es la URL de devolución de llamada de la aplicación conectada.
https://www.mycustomerorderstatus.com/oauth2/callback. - La segunda parte es el código de autorización que la aplicación conectada utiliza para obtener un token de acceso:
code=aPrx4sgoM2Nd1zWeFVlOWveD0HhYmiDiLmlLnXEBgX01tpVOQMWVSUuafFPHu3kCSjzk4CUTZg==. El código de autorización caduca después de 15 minutos.
Si el parÔmetro state estÔ incluido en la cadena de consulta original, el estado especificado se pasa al paso de aprobación.
Solicitar un token de acceso
Para solicitar un token de acceso, la aplicación conectada pasa el código de autorización al extremo de tokens de Salesforce como una operación POST de HTTP.
POST /services/oauth2/token HTTP/1.1
Host: mycompany.my.salesforce.com
Content-length: 307
Content-type: application/x-www-form-urlencoded
grant_type=authorization_code&
code=aPrxhgZ2MIpkSy0aOdn07LjKFvsFOis6RGcWXz7p8JQCjcqfed5NQLe7sxWwMY_JQFuLwHRaRA==&
client_id=3MVG9IHf89I1t8hrvswazsWedXWY0iqK20PSFaInvUgLFB6vrcb9bbWFTSIHpO8G2jxBLJA6uZGyPFC5Aejq&
client_secret=*******************&
redirect_uri=https://www.mycustomerorderstatus.com/oauth2/callback
POST en el ejemplo contiene estos parƔmetros.
| ParÔmetro | Descripción |
|---|---|
Request Header
|
El encabezado de la solicitud puede contener estos parƔmetros.
El encabezado de la solicitud tambiƩn admite estos parƔmetros.
El parƔmetro |
grant_type
|
El tipo de validación que la aplicación conectada puede proporcionar para probar que es un visitante seguro. Para el flujo de servidor web, el valor debe ser authorization_code. |
code
|
Un código de autorización temporal recibido del servidor de autorización. La aplicación conectada utiliza este código como intercambio por un token de acceso. Este tipo de flujo de OAuth 2.0 es una forma segura de pasar el token de acceso de vuelta a la aplicació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. Este parÔmetro es obligatorio a menos que la aplicación conectada no tenga Requerir secreto para flujo de servidor web activado. Si no se requiere |
redirect_uri
|
La URL donde se redirige a los usuarios después de una autenticación satisfactoria. El URI de redireccionamiento debe coincidir con uno de los valores del campo URL de devolución de llamada de la aplicación conectada. De lo contrario, la aprobación falla. Puede encontrar el URI de redireccionamiento en la pÔgina Gestionar aplicaciones conectadas de la aplicación conectada o en la definición de la aplicación conectada. Este valor debe tener codificación de URL. |
TambiƩn puede incluir estos parƔmetros.
| ParÔmetro | Descripción |
|---|---|
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.
|
client_assertion_type
|
Proporcione este valor cuando utilice el parƔmetro El valor |
code_verifier
|
Se requiere Ćŗnicamente si se especificó un parĆ”metro code_challenge en la solicitud de autorización. Especifica 128 bytes de datos aleatorios con alta entropĆa para hacer que intentar determinar el valor
|
format
|
Si no se incluye en el encabezado de la solicitud, puede especificar el formato de devolución esperado. El parÔmetro
|
client_assertion en vez de client_secret.Si proporciona client_assertion en vez de client_secret, el valor de client_assertion debe incluir estos parƔmetros.
iss:client_idde la definición de la aplicación conectada.sub:client_idde la definición de la aplicación conectada.aud: La URL del servlet de token: http://nombrehost/services/oauth2/token.exp: El plazo de vencimiento de la afirmación, en 5 minutos, expresado como el número de segundos desde 1970-01-01T0:0:0Z según la zona horaria UTC.
client_assertion también debe estar firmada con la clave privada asociada con el certificado cargado del consumidor de OAuth. Solo se admite el algoritmo RS256. Para el método de autenticación de cliente private_key_jwt, consulte las especificaciones de OpenID Connect.
En lugar de enviar credenciales de cliente como parÔmetros en el cuerpo de la operación POST, Salesforce admite el esquema de autenticación HTTP bÔsica. 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 el documento Marco de autorización OAuth 2.0.
Este ejemplo muestra una solicitud POST de token de acceso 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: mycompany.my.salesforce.com
Authorization: Basic client_id=3MVG9IHf89I1t8hrvswazsWedXWY0iqK20PSFaInvUgLFB6vrcb9bbWFTSIHpO8G2jxBLJA6uZGyPFC5Aejq&
client_secret=*******************&
grant_type=authorization_code&code=aPrxsmIEeqM9PiQroGEWx1UiMQd95_5JUZ
VEhsOFhS8EVvbfYBBJli2W5fn3zbo.8hojaNW_1g%3D%3D&
redirect_uri=https%3A%2F%2Fwww.mysite.com%2Fcode_callback.jspclient_id y client_secret se envĆan en el cuerpo de POST, se ignora el encabezado de autorización.Salesforce otorga un token de acceso
Después de que Salesforce valide las credenciales de la aplicación conectada, devuelve una respuesta con el token de acceso. En este ejemplo, la respuesta estÔ en un formato JSON.
{
"access_token": "00DB0000000TfcR!AQQAQFhoK8vTMg_rKA.esrJ2bCs.OOIjJgl.9Cx6O7KqjZmHMLOyVb.U61BU9tm4xRusf7d3fD1P9oefzqS6i9sJMPWj48IK",
"signature": "d/SxeYBxH0GSVko0HMgcUxuZy0PA2cDDz1u7g7JtDHw=",
"scope": "web openid",
"id_token": "eyJraWQiOiIyMjAiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdF9oYXNoIjoiSVBRNkJOTjlvUnUyazdaYnYwbkZrUSIsInN1YiI6Imh0dHBzOi8vbG9...",
"instance_url": "https://mycompany.my.salesforce.com",
"id": "https://login.salesforce.com/id/00DB0000000TfcRMAS/005B0000005Bk90IAC",
"token_type": "Bearer",
"issued_at": "1558553873237"
}
La respuesta incluye estos parƔmetros:
| 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. |
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. |
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 conectada cuando la construye, y se incluyen con los tokens de OAuth durante el flujo de autorización. |
id_token
|
Una estructura de datos firmada que contiene atributos de usuario autenticados, incluyendo un identificador único para el usuario y una marca de tiempo que indica el momento en que se emite el token. También identifica la aplicación del cliente solicitante. Consulte Especificaciones de OpenID Connect. Este parÔmetro se devuelve si el parÔmetro scope incluye |
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. |
token_type
|
Un tipo de token Bearer, que se utiliza para todas las respuestas que influyen un token de acceso.
|
issued_at
|
Marca de tiempo del momento de creación de la firma en milisegundos. |
La respuesta tambiƩn puede contener estos parƔmetros.

