Use OAuth con Uso compartido de recursos de origen cruzado para conectar una Aplicación de una sola página a Microsoft Dynamics 365

 

Publicado: enero de 2017

Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Con Actualización de Microsoft Dynamics CRM Online 2016 y Microsoft Dynamics 365 local con Implementación con conexión a Internet (IFD) puede crear Aplicaciones de una sola página (SPA) que usen JavaScript para trabajar con datos de Microsoft Dynamics 365. Para proporcionar esto, Uso compartido de recursos de origen cruzado (CORS) se habilita de forma que las SPA puedan superar las restricciones de explorador que evitan normalmente las solicitudes que cruzan límites de dominio.

Nota

La compatibilidad de CORS se proporciona sólo al usar la API web. No puede usar el servicio de la organización o el servicio de datos de la organización obsoleto.

En este tema

SPA y Directiva de mismo origen

Use CORS con Microsoft Dynamics 365 (online)

Cómo funciona adal.js

Preparación para usar ADAL.js con una SPA

SPA y Directiva de mismo origen

Las SPA dependen del uso extenso de JavaScript del lado del cliente para crear una sola página dinámica que no necesite cargar nuevas páginas. En su lugar usan XMLHTTPRequest para recuperar datos y otros recursos del servidor. Las SPA funcionan bien cuando los datos y recursos existen en el mismo dominio que la aplicación. Pero para proteger el acceso a los datos y recursos de otros dominios, todos los exploradores modernos aplican una directiva de Mismo origen para evitar que los sitios usen datos y recursos de sitios en un dominio distinto. CORS proporciona una forma de tener acceso a los recursos en otro dominio. Crear un SPA para tener acceso a datos de Microsoft Dynamics 365 sin CORS no es una opción viable.

Use CORS con Microsoft Dynamics 365 (online)

La especificación de Uso compartido de recursos de origen cruzado proporciona una descripción detallada de cómo implementar y usar CORS. Explica todo sobre los diferentes encabezados y las solicitudes de preparación que necesita aplicar para que CORS funcione. La buena noticia es que no necesita convertirse en un experto en CORS para usarla con Microsoft Dynamics 365. La parte del lado del servidor se ha realizado para usted y lo único que necesita es saber cómo consumirlo. No necesita comprender el funcionamiento interno de CORS para usarla con Microsoft Dynamics 365. En su lugar puede usar la Biblioteca de autenticación de Azure Active Directory para JavaScript (adal.js) y se ocupará de gran parte de la complejidad de CORS para usted. Dado que los usuarios de Dynamics 365 (online) y Implementación con conexión a Internet (IFD) se autentican con Azure Active Directory, ADAL.js es la forma compatible para autenticar usuarios de SPA.

Cómo funciona adal.js

La biblioteca central es adal.js. Puede obtener acceso a la versión minimizada de esta biblioteca en https://secure.aadcdn.microsoftonline-p.com/lib/1.0.0/js/adal.min.js. El proyecto y la documentación de GitHub está en https://github.com/AzureAD/azure-activedirectory-library-for-js.

La biblioteca adal.js contiene las capacidades de bajo nivel para autenticarse mediante OAuth2. Adal.js está diseñada para poder usarse con otros marcos de trabajo, por ejemplo, hay una biblioteca adal-angular.js que está diseñada para usarse con el marco de trabajo Angular. La forma en que trabaja con esta biblioteca es establecer determinadas propiedades de configuración y después esperará hasta que se produzcan eventos que desencadenen el flujo de interacción. Esto podría ser simplemente llamando a la función login o si su aplicación tiene comportamientos de enrutamiento, la autenticación podría ser iniciada en función de la configuración del controlador de esa ruta.

Cuando se requiere autenticación, el usuario pasa a la página de inicio de sesión donde pueden dar entidad a sus credenciales. Después de autenticarse correctamente, se reenvían a la página de llamada con la información de token adjuntada como fragmento (usando #) a la dirección URL. Esto permite que SPA adquiera el token y lo almacena en caché en almacenamiento local o de sesión en el explorador. Esto significa que la página completa se recarga tras la autenticación, pero esta vez la información sobre el usuario autorizado está disponible y la aplicación puede continuar realizando llamadas a la API web de Dynamics 365 o a otros recursos.

Cuando llama a la API web de Dynamics 365, debe incluir el valor del token en un encabezado Authorization con su XMLHTPPRequest. Sin embargo, dado que los tokens tienen una expiración debe estar seguro de que no expirará mientras los usuarios usan su SPA. Recuerde, la introducción de nuevas credenciales requiere que el contenido completo de su página SPA se transfiera a la página de inicio de sesión. Esto produciría una experiencia de usuario muy mala si ocurriera mientras los usuarios están en medio de una tarea. Para asegurarse de que esto no ocurre, envuelva las llamadas de la API web en una función acquireToken de modo que la validez del token se pueda comprobar y actualizar si es necesario sin llevar al usuario a una página de inicio de sesión.

Preparación para usar ADAL.js con una SPA

Para configurar su SPA para que funcione con adal.js deberá:

  1. Registrar su aplicación con el inquilino de Azure Active Directory

  2. Exporte el manifiesto de la aplicación registrada y edítelo para permitir OAuth2 Implicit Flow y luego vuelva a importar el archivo JSON al registro de la aplicación.

  3. Establezca variables de configuración en su SPA con información de ese registro.

    Deberá incluir lo siguiente:

    • La dirección URL de su organización de Microsoft Dynamics 365

    • El nombre del inquilino de Active Directory que usa la organización para autenticarse

    • El identificador del cliente que obtiene al registrar la aplicación

    • La dirección URL donde se implementará o depurará la SPA durante el desarrollo

Los pasos necesarios se describen en Tutorial: Registrar y configurar la aplicación SimpleSPA con adal.js.

Ver también

Autenticar usuarios en Microsoft Dynamics 365
Conexión con los servicios web de Microsoft Dynamics 365 mediante OAuth
Active Directory y autenticación basada en notificaciones

Microsoft Dynamics 365

© 2017 Microsoft. Todos los derechos reservados. Copyright