Skip to main content
Únase a nosotros en TDX, San Francisco o en Salesforce+ del 5 al 6 de marzo en la conferencia de desarrolladores para la era del agente de la IA. Regístrese ahora.

Implementar el flujo de servidor web de OAuth 2.0

Nota

Nota

¿Es su idioma de aprendizaje español (LATAM)? Comience el reto en un Trailhead Playground en español (LATAM) y utilice las traducciones entre paréntesis para navegar. Copie y pegue solo los valores en inglés, ya que las validaciones del reto dependen de los datos en ese idioma. Si no aprueba el reto en su organización en español (LATAM), recomendamos que (1) cambie la configuración local a Estados Unidos, (2) cambie el idioma a inglés (según estas instrucciones) y, luego, (3) haga clic en el botón “Check Challenge” (Comprobar el reto) nuevamente.

Consulte la insignia Trailhead en su idioma para obtener más información sobre cómo aprovechar la experiencia de Trailhead en otros idiomas.

Elegir un flujo

Ahora que ya creó la aplicación conectada Customer Order Status (Estado de pedidos de cliente) para los usuarios del servicio de asistencia, deberá implementar un flujo para la aplicación. Como la aplicación conectada integra un servicio web externo, el sitio web de Customer Order Status (Estado de pedidos de cliente), con la API de Salesforce, recomendamos utilizar el flujo de servidor web de OAuth 2.0. Este flujo de autorización utiliza el tipo de concesión de código de autorización. Si necesita un repaso de este flujo de OAuth 2.0, puede volver a consultar el módulo Aspectos básicos de aplicaciones conectadas.

Solicitar un código de autorización

Para iniciar el flujo de servidor web de OAuth 2.0, el servicio web de Customer Order Status (Estado de pedidos de cliente) publica, a través de la aplicación conectada, una solicitud de código de autorización (con el tipo de concesión de código de autorización) en el extremo de autorización de Salesforce. Un código de autorización es como una insignia de visitante. Con ella, la aplicación conectada puede probar que cuenta con autorización como visitante seguro del sitio y con permiso para solicitar un token de acceso.

La llamada se realiza en forma de un redireccionamiento HTTP, como el siguiente.

https://mycompany.my.salesforce.com/services/oauth2/authorize?
client_id=3MVG9IHf89I1t8hrvswazsWedXWY0i1qK20PSFaInvUgLFB6vrcb9bbWFTSIHpO8G2jxBLJA6uZGyPFC5Aejq&
redirect_uri=https://www.mycustomerorderstatus.com/oauth2/callback&
response_type=code

Si no está familiarizado con estos tipos de llamadas, no se preocupe. Dividamos el proceso en sus componentes individuales.

Componente 1

https://mycompany.my.salesforce.com/services/oauth2/authorize

Esta dirección es el extremo de autorización de OAuth 2.0 de la instancia de Salesforce. Es el extremo al que sus aplicaciones conectadas envían solicitudes de autorización de OAuth.

Componente 2

client_id=3MVG9IHf89I1t8hrvswazsWedXWY0i1qK20PSFaInvUgLFB6vrcb9bbWFTSIHpO8G2jxBLJA6uZGyPFC5Aejq

La Id. de cliente es la clave de consumidor de la aplicación conectada. Para acceder a la clave de consumidor, desde la página Manage Connected Apps (Administrar aplicaciones conectadas) de la aplicación conectada, haga clic en Manage Consumer Details (Administrar detalles de consumidor) y, luego, verifique su identidad.

La clave de consumidor de la aplicación conectada en la página Manage Connected Apps (Administrar aplicaciones conectadas).

Componente 3

redirect_uri=https://www.mycustomerorderstatus.com/oauth2/callback

La URI de redireccionamiento es a donde se redirige a los usuarios luego de una autorización exitosa. La URI de redireccionamiento es la URL de devolución de llamada de la aplicación conectada, que también podrá encontrar en la página Manage Connected Apps (Administrar aplicaciones conectadas) de la aplicación conectada.

En esta imagen, se muestra la URL de devolución de llamada que corresponde a las muestras de código. Para su aplicación conectada, utilice la URL de devolución de llamada https://openidconnect.herokuapp.com/callback que ingresó en la Unidad 1: Crear una aplicación conectada.

La URL de devolución de llamada de la aplicación conectada en la página Manage Connected Apps (Administrar aplicaciones conectadas).

Componente 4

response_type=code

El tipo de respuesta indica a Salesforce qué tipo de concesión de OAuth 2.0 solicita la aplicación conectada. El tipo de respuesta de código indica que la aplicación conectada solicita un código de autorización.

Autenticar el usuario y otorgar acceso a la aplicación

Antes de que Salesforce proporcione un código de autorización a la aplicación conectada, debe autenticarse con su cuenta. Para ello, inicie sesión en su organización de Salesforce.

Página de inicio de sesión en la que se solicita al usuario iniciar sesión en su organización de Salesforce.

Luego de iniciar sesión correctamente, haga clic en Allow (Permitir) para autorizar que la aplicación conectada acceda a los datos de su organización de Salesforce.

En la página Allow Access (Permitir el acceso), se pregunta si se permite a la aplicación conectada acceder a los datos de la organización de Salesforce.

Recibir una devolución de llamada

Luego de autorizar la aplicación, Salesforce enviará una devolución de llamada a la aplicación conectada con un código de autorización.

https://www.mycustomerorderstatus.com/oauth2/callback?
code=aPrx4sgoM2Nd1zWeFVlOWveD0HhYmiDiLmlLnXEBgX01tpVOQMWVSUuafFPHu3kCSjzk4CUTZg==

Componente 1

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

Componente 2

La segunda parte es el código de autorización, que aprueba la aplicación.

code=aPrx4sgoM2Nd1zWeFVlOWveD0HhYmiDiLmlLnXEBgX01tpVOQMWVSUuafFPHu3kCSjzk4CUTZg==

Solicitar un token de acceso

Ahora que la aplicación conectada cuenta con un código de autorización válido, lo pasa al extremo del token de Salesforce para solicitar un token de acceso.

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

Analicemos también los componentes individuales de esta llamada.

Componente 1

POST /services/oauth2/token HTTP/1.1
Host: mycompany.my.salesforce.com
Content-length: 307
Content-type: application/x-www-form-urlencoded

Las primeras dos líneas de este componente son la solicitud POST que se realiza al extremo del token de OAuth 2.0 de la instancia de Salesforce. Este extremo es al que sus aplicaciones conectadas envían solicitudes de token de acceso y actualización.

En las segundas dos líneas, se observa la longitud y el tipo del contenido de la solicitud.

Componente 2

grant_type=authorization_code

El tipo de concesión define la pauta de validación que la aplicación conectada puede proporcionar para probar que es un visitante seguro. En este caso, proporciona un código de autorización.

Componente 3

code=aPrxhgZ2MIpkSy0aOdn07LjKFvsFOis6RGcWXz7p8JQCjcqfed5NQLe7sxWwMY_JQFuLwHRaRA

El código de autorización es un valor temporal que se obtiene del servidor de autorización (en este caso, Salesforce). La aplicación conectada utiliza este código en lugar de un token de acceso. Este tipo de flujo de OAuth 2.0 es una forma segura de pasar el token de acceso a la aplicación.

Componente 4

client_id=3MVG9IHf89I1t8hrvswazsWedXWY0i1qK20PSFaInvUgLFB6vrcb9bbWFTSIHpO8G2jxBLJA6uZGyPFC5Aejq

Este componente también debería resultarle familiar. Es la clave de consumidor de la aplicación conectada de la página Manage Connected Apps (Administrar aplicaciones conectadas).

Componente 5

client_secret=*******************

El secreto de cliente es el mismo que el secreto de consumidor de la aplicación conectada. Al secreto de consumidor se accede de la misma forma que a la clave de consumidor. Desde la página Manage Connected Apps (Administrar aplicaciones conectadas), haga clic en Manage Consumer Details (Administrar detalles de consumidor) y, luego, verifique su identidad.

En esta imagen, se muestra la URL de devolución de llamada que corresponde a las muestras de código. Para su aplicación conectada, utilice la URL de devolución de llamada https://openidconnect.herokuapp.com/callback que ingresó en la Unidad 1: Crear una aplicación conectada.

El secreto de consumidor de la aplicación conectada en la página Manage Connected Apps (Administrar aplicaciones conectadas).

Componente 6

redirect_uri=https://www.mycustomerorderstatus.com/oauth2/callback

¿Recuerda este componente de las 2 primeras llamadas? Es la URL de devolución de llamada de la aplicación conectada.

Recibir un token de acceso

Cuando creó la aplicación conectada, seleccionó la opción Require Secret for Web Server Flow (Requerir secreto para el flujo de servidor web). Este requisito implica que Salesforce no puede otorgar un token de acceso a la aplicación conectada a menos que esta envíe un secreto de consumidor válido. Por ello, en este paso, Salesforce valida el código de autorización, la clave de consumidor y el secreto de consumidor de la aplicación conectada.

Luego de que Salesforce valida las credenciales de la aplicación conectada, envía un token de acceso en formato JSON. El token de acceso también incluye permisos asociados en forma de ámbitos y un token de Id. para la aplicación.

{
"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://mydomain.my.salesforce.com/id/00DB0000000TfcRMAS/005B0000005Bk90IAC",
"token_type": "Bearer",
"issued_at": "1558553873237"
}

Su turno

Ahora es su turno de probar el flujo de servidor web de OAuth 2.0. Como se pasa información confidencial entre la instancia de Salesforce y la URL de devolución de llamada durante el flujo, es fundamental que esta información no se envíe a ubicaciones arbitrarias. Para demostrar de forma segura el flujo de autorización, utilizamos una zona de pruebas segura de OpenID Connect creada para este fin específico. La zona de pruebas de OpenID Connect se encuentra alojada en un servidor seguro de Heroku que muestra el flujo de autorización a la vez que protege sus datos.

Cuando implementa este flujo en el mundo real, es fundamental utilizar un host seguro para la URL de devolución de llamada, de forma que los datos se mantengan protegidos.

Vamos a empezar. Primero, recopile algunos datos sobre la aplicación conectada que creó en el primer paso de este proyecto.

  • Clave de consumidor
  • Pregunta secreta de consumidor
  • URL de devolución de llamada

También necesitará la URL de My Domain de Trailhead Playground, que podrá encontrar en Setup (Configuración) | My Domain (Mi dominio).

La página My Domain (Mi dominio) en la que se muestra el nombre de dominio de una organización.

Pruébelo

  1. Abra la Zona de pruebas de OpenID Connect.
  2. Copie la URL de My Domain de su Trailhead Playground, y péguela luego de https:// como el host de inicio de sesión.
  3. Pegue la clave de consumidor de su aplicación conectada.
  4. Pegue el secreto de consumidor de su aplicación conectada. (La zona de pruebas de OpenID Connect utiliza POST para enviar información, lo que significa que no se registró el secreto de cliente).
  5. Verifique que la URL de devolución de llamada de su aplicación conectada coincida con la URI de redireccionamiento (URL de devolución de llamada). Sugerencia: Ingresó esta URL de devolución de llamada en el primer paso de este proyecto.

La zona de pruebas de OpenID Connect con los campos de host de inicio de sesión, Id. de cliente, secreto de cliente y URI de redireccionamiento propagados.

  1. Haga clic en Next (Siguiente) para enviar una solicitud de código de autorización. Si recibe una solicitud para permitir que la zona de pruebas de OpenID Connect acceda a Trailhead Playground, haga clic en Allow (Permitir). Si la solicitud se realiza correctamente, recibirá un código de autorización. En el lado derecho de la página, puede ver su solicitud de autorización y la respuesta del servidor de Heroku. Estas deberían verse similares a la solicitud y la respuesta que mostramos antes.

 

La zona de pruebas de OpenID Connect en la que se muestra el código de autorización, junto con su solicitud y respuesta.

  1. Haga clic en Next (Siguiente) para solicitar un token de acceso. Si se realiza correctamente la solicitud, recibirá un token de acceso y uno de Id. En el lado derecho de la página, puede ver su solicitud de token de acceso y la respuesta del servidor de Heroku. Estas deberían verse similares a la solicitud y la respuesta que mostramos antes. 

La zona de pruebas de OpenID Connect en la que se muestran el token de acceso y el de Id., y la solicitud y la respuesta del token de acceso.

  1. Haga clic en Next (Siguiente) de nuevo para pasar el token de acceso al servidor de Heroku. El servidor de Heroku debería responder con los metadatos de su aplicación conectada.

Ventaja adicional: acceder a los datos de estado de pedidos

¡Felicitaciones! Implementó correctamente el flujo de servidor web de OAuth 2.0. Ahora, la aplicación conectada Customer Order Status (Estado de pedidos de cliente) puede enviar una solicitud a su organización de Salesforce para acceder a los datos de estado de un pedido específico. La solicitud de la aplicación conectada incluye el token de acceso. Luego de que la organización de Salesforce valida el token de acceso y los ámbitos asociados, otorga a la aplicación acceso a los datos de estado del pedido.

Si desea conocer otros métodos no explicados en esta ruta, puede recuperar el estado del pedido de la siguiente manera.

  1. Cree un pedido en su Trailhead Playground. Consulte Pedidos en la Ayuda de Salesforce.
  2. Utilice la consulta de cURL apropiada para recuperar el estado del nuevo pedido mediante la API de REST de Salesforce. Sugerencia Sugerencia: La plataforma macOS admite cURL de forma automática, al igual que Windows 10 Build 17063. Si la plataforma no tiene cURL ya instalado, puede descargarlo en https://curl.haxx.se/.
    Si utiliza una plataforma diferente a macOS o Windows, como Linux, modifique la consulta de cURL según sea necesario para cumplir con los requisitos de su plataforma.
    Consulta de cURL de Mac:curl https://<your_trailhead_domain>/services/data/v55.0/sobjects/Order/<order_ID>\?fields\=Status -H 'Authorization: Bearer <access_token>' -H "X-PrettyPrint:1"
    Consulta de cURL de Windows:curl https://<your_trailhead_domain>/services/data/v55.0/sobjects/Order/<order_ID>?fields=Status -H “Authorization: Bearer <access_token>” -H "X-PrettyPrint:1"
    En la consulta de cURL, asegúrese de reemplazar lo siguiente:
    • <your_trailhead_domain> por el nombre de dominio de su Trailhead Playground.
    • <order_ID> por la Id. de pedido que se encuentra en la URL de la página Order (Pedido). 

Id. de pedido que se muestra en la URL de la página Order (Pedido).

    • <access_token> por el token de acceso que recibió de la zona de pruebas de OpenID Connect.
  1. Si se realiza correctamente la consulta, debería recibir una respuesta como la siguiente:
    {
    "attributes" : {
    "type" : "Order",
    "url" : "/services/data/v55.0/sobjects/Order/8014P000001s9OLXXX"
    },
    "Status" : "Draft",
    "Id" : "8014P000001s9OLXXX"
    }

Momento de administrar su aplicación conectada

Es momento de cumplir el rol de administrador de Salesforce. En el próximo paso, administrará el acceso a la aplicación conectada.

Recursos

Verificar paso

+100 puntos

Completará esta/este proyecto en su propia organización de prácticas. Haga clic en Iniciar para empezar a trabajar, o haga clic en el nombre de su organización para seleccionar una diferente.

Comparta sus comentarios de Trailhead en la Ayuda de Salesforce.

Nos encantaría saber más sobre su experiencia con Trailhead. Ahora puede acceder al nuevo formulario de comentarios en cualquier momento en el sitio de Ayuda de Salesforce.

Más información Continuar a Compartir comentarios