Uso de autenticación de Office365 con Microsoft Dataverse

Importante

El uso del protocolo de seguridad de autenticación WS-Trust (Office365) al conectarse a Microsoft Dataverse ya no se recomienda y ha quedado obsoleto; vea el anuncio.

Además, el protocolo WS-Trust no admite formas modernas de autenticación multifactor y controles de acceso condicional de Microsoft Entra ID a los datos del cliente.

En este documento se describe el impacto y los cambios necesarios en el código de autenticación para las aplicaciones cliente personalizadas que usan la autenticación "Office365" y las clases OrganizationServiceProxy, ServiceClient o CrmServiceClient. Si sus aplicaciones usan este tipo de protocolo de autenticación y API, continúe leyendo a continuación para obtener más información sobre los cambios de autenticación recomendados que se realizarán en el código de su aplicación.

¿Cómo sé si mi código o aplicación está usando WS-Trust?

Primero y más importante, este cambio solamente afecta las aplicaciones cliente que se conectan a Microsoft Dataverse. No afecta a los complementos personalizados, las actividades de flujo de trabajo o las conexiones de servicio locales/IFD.

  • Si su código emplea credenciales de cuenta de usuario y contraseña para la autenticación con Dataverse o una aplicación, es probable que esté utilizando el protocolo de seguridad WS-Trust. Algunos ejemplos se muestran a continuación, aunque esta lista no es totalmente inclusiva.

    • Cuando use la clase CrmServiceClient o ServiceClient con una cadena de conexión:

      connectionString="AuthType=Office365; Username=jsmith\@contoso.onmicrosoft.com;Password=passcode;Url=https://contoso.crm.dynamics.com"

    • Cuando use constructores de clase OrganizationServiceProxy:

using (OrganizationServiceProxy organizationServiceProxy =
    new OrganizationServiceProxy(serviceManagement, clientCredentials)
{ ... }
  • Si su código usa la clase OrganizationServiceProxy, está utilizando WS-Trust.

  • Si su código usa CrmServiceClient.OrganizationServiceProxy, está utilizando WS-Trust.

¿Qué debo hacer para corregir el código de mi aplicación si está afectado?

Hay formas muy directas de modificar el código de su aplicación para usar la interfaz de conexión recomendada para autenticación con Dataverse.

Importante

Mantenga sus aplicaciones actualizadas con nuestros últimos cambios en la API del SDK de cliente, descargando y utilizando los últimos paquetes NuGet disponibles siempre que sea posible.

  • Si su código usa una instancia de OrganizationServiceProxy:

    Si está pasando la instancia OrganizationServiceProxy por varios métodos, o devolviendo la instancia de un método, reemplace todas las apariciones del tipo OrganizationServiceProxy con la interfaz IOrganizationService. Esta interfaz expone todos los métodos principales utilizados para comunicarse con Dataverse.

    Al invocar al constructor, se recomienda reemplazar todo uso de constructores de la clase OrganizationServiceProxy con constructores de la clase CrmServiceClient o ServiceClient. Sin embargo, deberá modificar su patrón de codificación aquí, para hacerlo más sencillo CrmServiceClient y ServiceClient admiten cadenas de conexión además de constructores complejos y la capacidad de proporcionar controladores de autenticación externos. Las clases de cliente de servicio implementan IOrganizationService, por tanto, su nuevo código de autenticación será portátil para el resto del código de su aplicación. Puede buscar ejemplos sobre el uso de las clases de cliente de servicio en PowerApps (ejemplos).

  • Si su código está usando las clases ServiceClient o CrmServiceClient con el tipo de autenticación “Office365”:

    Un ejemplo de esto es una cadena de conexiones que tiene este aspecto:

    connectionString = "AuthType=Office365;Username=jsmith@contoso.onmicrosoft.com;Password=passcode;Url=https://contoso.crm.dynamics.com"

    Del mismo modo, también podría estar utilizando un constructor CrmServiceClient o ServiceClient y pasar a AuthType.Office365.

    • Cambie a usar una cadena de conexión basada en OAuth. Dicha cadena de conexión tiene este aspecto:

      connectionString = "AuthType=OAuth;Username=jsmith@contoso.onmicrosoft.com;
      Password=passcode;Url=https://contosotest.crm.dynamics.com;AppId=51f81489-12ee-4a9e-aaae-a2591f45987d;
      RedirectUri=app://58145B91-0C36-4500-8554-080854F2AC97;LoginPrompt=Auto"`
      

      Esta será su forma más rápida de actualizar el código. Tenga en cuenta que LoginPrompt se puede configurar en "nunca" para simular la forma en que funcionó el comportamiento de Office365.

      AppId y RedirectUri proporcionados anteriormente son ejemplos de valores de registro de la aplicación en funcionamiento. Estos valores funcionan en todas partes donde se implementan nuestros servicios en línea. Sin embargo, se proporcionan aquí como ejemplo y le recomendamos que cree su propio registro de aplicación en Microsoft Entra ID para aplicaciones que se ejecutan en su inquilino. Utilice sus valores de nombre de usuario, contraseña y URL de entorno de Dataverse en la cadena de conexión, junto con RedirectUri y AppId, que puede obtener del registro de la aplicación de Azure.

  • Si está accediendo a la propiedad CrmServiceClient.OrganizationServiceProxy :

    Elimine todo uso de esa propiedad en su código. Las clases ServiceClient y CrmServiceClient implementan IOrganizationService y expone todo lo que se puede configurar para el proxy de servicio de la organización.

Importante

Si no puede iniciar sesión con ID de usuario/Contraseña incluso usando OAuth, si su inquilino y usuario están configurados en Microsoft Entra ID para acceso condicional y/o autenticación multifactor es necesaria, no podrá utilizar los flujos de ID de usuario/contraseña en un formato no interactivo. Para esas situaciones, debe usar un usuario principal de servicio para autenticarse con Dataverse.

Para ello, primero debe registrar el usuario de la aplicación (Principal de servicio) en Microsoft Entra ID. Puedes averigua cómo hacer esto aquí. Durante el registro de la aplicación, deberá crear ese usuario en Dataverse y otorgar permisos. Esos permisos se pueden otorgar directa o indirectamente agregando al usuario de la aplicación a un equipo al que se le han otorgado permisos en Dataverse. Puede encontrar más información sobre cómo configurar un "usuario de la aplicación" sin licencia para autenticarse con Dataverse aquí.

¿Necesita ayuda?

Estaremos supervisando los foros de la comunidad ALM y ProDev de Power Apps. Eche un vistazo allí para obtener ayuda sobre cómo resolver diversos problemas o publicar una pregunta.

Vea también

Usar cadenas de conexión en útiles de XRM para conectarse a Microsoft Dataverse

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).