Implementar el flujo del servidor web de OAuth 2.0
Elegir un flujo
Ahora que ha desarrollado una aplicación Customer Order Status para usuarios del servicio técnico, necesita implementar un flujo para la aplicación. Como la aplicación conecta integra un servicio web externo (el sitio web de Customer Order Status) en la API de Salesforce, le recomendamos usar el flujo de servidor web de OAuth 2.0. Este flujo de autorización utiliza el tipo de concesión mediante código de autorización. Si necesita repasar el flujo de OAuth 2.0, puede volver al módulo Fundamentos sobre las aplicaciones conectadas.
Solicitar un código de autorización
Para iniciar el flujo del servidor web de OAuth 2.0, el servicio web de Customer Order Status publica (mediante la aplicación conectada) una solicitud de código de autorización (con el tipo de concesión mediante código) en el extremo de autorización de Salesforce. Un código de autorización es como un distintivo de visitante. Con él, la aplicación conectada puede demostrar que se ha autorizado como visitante seguro en el sitio, y que tiene permiso para solicitar un token de acceso.
La llamada se realiza a modo de redireccionamiento HTTP, como el siguiente.
Si no conoce este tipo de llamadas, no se preocupe. Vamos a describir el proceso en 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 en el que las aplicaciones conectadas envían solicitudes de autorización de OAuth.
Componente 2
El ID de cliente es la clave de consumidor de la aplicación conectada. Para acceder a la clave de consumidor, en la página Manage Connected Apps (Gestionar aplicaciones conectadas) de la aplicación conectada, haga clic en Manage Consumer Details (Gestionar detalles del consumidor) y verifique su identidad.
Componente 3
La URI de redireccionamiento es el lugar al que se redirige a los usuarios después de recibir autorización. Esta URI es la URL de devolución de llamada de la aplicación conectada, que también encontrará en la página Manage Connected Apps (Gestionar aplicaciones conectadas) de la aplicación conectada.
En esta imagen vemos la URL de devolución de llamada que se corresponde con las muestras de código. En el caso de su aplicación conectada, puede usar la URL de devolución de llamada https://openidconnect.herokuapp.com/callback que introdujo 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 del código indica que la aplicación conectada solicita un código de autorización.
Autenticar al usuario y conceder acceso a la aplicación
Para que Salesforce proporcione un código de autorización a la aplicación conectada, debe autenticarse iniciando sesión en su organización de Salesforce.
Después de iniciar sesión, haga clic en Allow (Permitir) para autorizar la aplicación conectada a fin de que acceda a los datos de su organización de Salesforce.
Recibir una devolución de llamada
Después de autorizar la aplicación, Salesforce envía 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 permite aprobar la aplicación.
Solicitar un token de acceso
Ahora que la aplicación conectada tiene un código de autorización, lo envía al extremo de tokens de Salesforce para solicitar un token de acceso.
Analicemos los componentes individuales de la llamada también.
Componente 1
Las dos primeras líneas del componente corresponden a la solicitud POST que se envía al extremo de tokens de OAuth 2.0 de la instancia de Salesforce. Este extremo es el lugar donde las aplicaciones conectadas envían solicitudes de acceso y de tokens de actualización.
Las dos siguientes líneas corresponden a la longitud y el tipo de contenido de la solicitud.
Componente 2
El tipo de concesión define el tipo de validación que puede proporcionar la aplicación conectada para demostrar que es un visitante seguro. En este caso, la aplicación 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 para conseguir un token de acceso. Este tipo de flujo de OAuth 2.0 es una manera segura de devolver el token de acceso a la aplicación.
Componente 4
Este componente también debe resultarle familiar. Es la clave de consumidor de la aplicación conectada en la página Manage Connected Apps (Gestionar aplicaciones conectadas).
Componente 5
El secreto de cliente es igual que el secreto de consumidor de la aplicación conectada. Al secreto de consumidor se accede de la misma manera que a la clave de consumidor. En la página Manage Connected Apps (Gestionar aplicaciones conectadas) de la aplicación conectada, haga clic en Manage Consumer Details (Gestionar detalles del consumidor) y verifique su identidad.
En esta imagen vemos la URL de devolución de llamada que se corresponde con las muestras de código. En el caso de su aplicación conectada, puede usar la URL de devolución de llamada https://openidconnect.herokuapp.com/callback que introdujo en la Unidad 1: Crear una aplicación conectada.
Componente 6
¿Se acuerda de este componente de las primeras dos 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 (Solicitar secreto para el flujo de servidor web). Este requisito implica que Salesforce no podrá proporcionar un token de acceso a la aplicación conectada a menos que la aplicación envíe un secreto de consumidor válido. Es decir, 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.
Cuando Salesforce valida las credenciales de la aplicación conectada, devuelve un token de acceso en formato JSON. El token de acceso también incluye los permisos asociados en forma de alcances, y un token de identificación para la aplicación.
Es su turno
Ahora le toca a usted probar el flujo del servidor web de OAuth. Puesto que se envía información confidencial entre la instancia de Salesforce y la URL de devolución de llamada durante el flujo, es fundamental que la información no se envíe a cualquier ubicación. Para poder enseñarle cómo funciona el flujo de autorización de forma segura, vamos a usar un Playground de OpenID Connect creado para esto. El Playground de OpenID Connect se aloja en un servidor seguro de Heroku donde se muestra el flujo de autorización a la vez que se protegen sus datos.
Al implementar este flujo en el mundo real, es imprescindible usar un host seguro para la URL de devolución de llamada, de forma que se protejan sus datos.
Vamos a empezar. En primer lugar, recopile información sobre la aplicación conectada que ha creado en el primer paso de este proyecto.
- Clave de consumidor
- Secreto de consumidor
- URL de devolución de llamada
También necesita la URL de My Domain (Mi dominio) de su Trailhead Playground, que está disponible en Setup (Configuración) | My Domain (Mi dominio).
Hagamos la prueba
- Abra el Playground de OpenID Connect.
- Copie la URL de Mi dominio de su Trailhead Playground y péguela después de https:// como host de inicio de sesión.
- Pegue la clave de consumidor de la aplicación conectada.
- Pegue el secreto de consumidor de la aplicación conectada. (El Playground de OpenID Connect utiliza el método POST para enviar información, lo que significa que no se ha registrado su secreto de cliente).
- Compruebe que la URL de devolución de llamada de la aplicación conectada coincide con la URI de redireccionamiento (URL de devolución de llamada). Sugerencia: Ha introducido esta URL de devolución de llamada en el primer paso del proyecto.
- Haga clic en Next (Siguiente) para enviar una solicitud de código de autorización. Si recibe una solicitud para permitir que el Playground de OpenID Connect acceda a su Trailhead Playground, continúe y haga clic en Allow (Permitir). Si la solicitud es correcta, recibirá un código de autorización. En el lado derecho de la página, puede ver la solicitud de autorización y la respuesta del servidor de Heroku. Deberían tener un aspecto similar a la solicitud y la respuesta que hemos enseñado antes.
- Haga clic en Next (Siguiente) para solicitar un token de acceso. Si la solicitud se completa correctamente, recibirá un token de acceso y un token de identificación. En el lado derecho de la página, puede ver la solicitud de token de acceso y la respuesta del servidor de Heroku. Deberían tener un aspecto similar a la solicitud y la respuesta que hemos enseñado antes.
- Vuelva a hacer clic en Next (Siguiente) para devolver el token de acceso al servidor de Heroku. El servidor de Heroku debería responder con los metadatos de la aplicación conectada.
Puntos extra: acceso a datos del estado de pedidos
¡Enhorabuena! ¡Ha implementado el flujo del servidor web de OAuth 2.0! Ahora, la aplicación Customer Order Status puede enviar una solicitud a su organización de Salesforce para acceder a datos del estado de un pedido específico. La solicitud de la aplicación conectada incluye el token de acceso. Cuando la organización de Salesforce valida el token de acceso y los alcances asociados, concede acceso a la aplicación a los datos del estado de pedidos.
Si quiere explorar nuevos territorios más allá de esta ruta, puede recuperar el estado de pedidos haciendo lo siguiente.
- Cree un pedido en su Trailhead Playground. Consulte Pedidos en la Ayuda de Salesforce.
- Utilice la consulta cURL apropiada para recuperar el estado del nuevo pedido desde la API de REST de Salesforce.
Sugerencia: La plataforma macOS admite automáticamente las consultas cURL, al igual que Windows 10, compilación 17063. Si su plataforma no tiene cURL instalado, puede descargarlo desde https://curl.haxx.se/.
Si utiliza otra plataforma que no sea macOS o Windows, como Linux, modifique la consulta cURL según sea necesario para ajustar a sus requisitos especiales.
Consulta cURL en 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 cURL en 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"
Asegúrese de sustituir lo siguiente en la consulta cURL:
- <your_trailhead_domain> con el nombre de dominio de su Trailhead Playground.
- <order_ID> con el Id. de pedido ubicado en la URL de la página del pedido.
- <access_token> con el token de acceso recibido desde el Playground de OpenID Connect.
- Si la consulta se completa correctamente, recibirá una respuesta similar a esta:
Hora de gestionar la aplicación conectada
Ahora toca jugar a ser administrador de Salesforce. En el siguiente paso, va a gestionar el acceso a la aplicación conectada.
Recursos
-
Ayuda de Salesforce: OAuth Authorization Flows (Flujos de autorización de OAuth)
-
Ayuda de Salesforce: OAuth 2.0 Web Server Flow for Web App Integration (Flujo del servidor web de OAuth para la integración de aplicaciones web)
-
Trailhead: Aspectos básicos sobre las API