Implementar el flujo de servidor web de OAuth 2.0
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.
Si no está familiarizado con estos tipos de llamadas, no se preocupe. Dividamos el proceso en sus componentes individuales.
Componente 1
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
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.
Componente 3
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.
Componente 4
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.
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.
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.
Componente 1
La primera parte de la devolución de llamada es la URL de devolución de llamada de la aplicación conectada.
Componente 2
La segunda parte es el código de autorización, que aprueba la aplicación.
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.
Analicemos también los componentes individuales de esta llamada.
Componente 1
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
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
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
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
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.
Componente 6
¿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.
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).
Pruébelo
- Abra la Zona de pruebas de OpenID Connect.
- Copie la URL de My Domain de su Trailhead Playground, y péguela luego de https:// como el host de inicio de sesión.
- Pegue la clave de consumidor de su aplicación conectada.
- 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).
- 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.
- 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.
- 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.
- 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.
- Cree un pedido en su Trailhead Playground. Consulte Pedidos en la Ayuda de Salesforce.
- Utilice la consulta de cURL apropiada para recuperar el estado del nuevo pedido mediante la API de REST de Salesforce.
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).
- <access_token> por el token de acceso que recibió de la zona de pruebas de OpenID Connect.
- Si se realiza correctamente la consulta, debería recibir una respuesta como la siguiente:
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
-
Ayuda de Salesforce: Flujos de autorización de OAuth
-
Ayuda de Salesforce: Flujo de servidor web de OAuth 2.0 para la integración de la aplicación web
-
Trailhead: Aspectos básicos de las API