No se puede conectar a NAV usando ODAta

Un usuario Pregunto ✅

MIV

Tengo entorno NAV 2017 con consultas creadas y publicadas. Lamentablemente, no puedo conectarme con aquellos con Power BI. Estoy usando acceso básico con nombre de usuario y clave de acceso web.

Yo puedo:

  • acceder a consultas a través del navegador (es decir, + edge)
  • acceder a consultas a través de Excel

Pero Power BI me da «Error de usuario no autorizado».

Cualquier ayuda sería muy apreciada porque parece que no puedo entender cuál es el problema.

¡Gracias!

AOS

Esto ocurre con una instancia NAV de varios inquilinos si la propiedad ID alternativa no está configurada para el inquilino. El problema está más bien en el lado de NAV, ya lo he informado a Microsoft.

En breve, la instancia NAV de múltiples inquilinos es una arquitectura con un servicio (instancia) que aloja muchas entidades aisladas (inquilinos). Un URI de OData debe incluir el nombre del inquilino como parámetro, por ejemplo, https://MyNav.contoso.com:7048/NAV/OData/Company(‘MyCompany’)/MyQuery?tenant=MyTenant. Cada solicitud debe dirigirse al inquilino adecuado o, de lo contrario, la solicitud fallará.

Cuando PowerBI se conecta a dicha fuente, abre con éxito la conexión y recupera un conjunto de filas de «vista previa». El JSON de «vista previa» contiene un URI de metadatos, por ejemplo, https://MyNav.contoso.com:7048/NAV/OData/$metadata. Uno puede notar que? Tenant = MyTenant no se encuentra en el URI. (Esto es fácil de probar: pruebe https://MyNav.contoso.com:7048/NAV/OData/$metadata y fallará, pero si prueba https://MyNav.contoso.com:7048/NAV/OData/$ metadata? tenant = MyTenant, recibirá los metadatos.) PowerBI envía GET https://MyNav.contoso.com:7048/NAV/OData/$metadata y la respuesta es el error 401 «No autorizado». Una vez que PowerBI falló con la solicitud de metadatos, devolverá el error «Usuario no autorizado» al usuario. Excel simplemente ignora el error de solicitud de metadatos y entrega datos del feed.

Si un inquilino NAV tiene configurada la opción de identificación alternativa, el parámetro de inquilino se puede ignorar porque la identificación alternativa define de forma única un inquilino en un entorno de múltiples inquilinos. De hecho, Alternate ID es un nombre de host completo que básicamente cambia el URI de inquilino predeterminado https://MyNav.contoso.com:7048/NAV/OData/Company(‘MyCompany’)/MyQuery?tenant=MyTenant a https: // MyTenant .contoso.com: 7048 / NAV / OData / Company (‘MyCompany’) / MyQuery. El URI de metadatos se convierte en https://MyTenant.contoso.com:7048/NAV/OData/$metadata y es válido sin el parámetro de inquilino.

Por lo tanto, la solución es usar ID alternativos por inquilino en su instancia NAV de múltiples inquilinos. Si el uso de ID alternativos no es posible, espere que Microsoft confirme esto como un error y emita una solución para esto.

MadsW

Estoy un poco molesto aquí, porque parece que no puedo hacer que esto funcione. Mi feed de odata cuando se copia desde NAV:

https: // : / / OData / Compañía (‘ ‘) / ? inquilino =

Si siguiera la sugerencia de solución aquí, debería tener esta URL:

https: // . : / / OData / Compañía (‘ ‘) /

¿Pero parece que necesitaría alguna configuración de DNS para manejar eso? Recibo un error cuando intento usar esa URL. ¿Qué debo hacer más que establecer la identificación de inquilino alternativa en la misma identificación que el inquilino?

AOS

En respuesta a MadsW

@MadsWDe hecho, necesita un registro DNS para resolver el nombre de ID alternativo.

Primero, usar la dirección IP como nombre de servidor no es práctico; si la dirección IP cambia, es posible que deba actualizar la dirección IP en muchos lugares, como archivos de configuración, fuentes de datos PowerBI, etc. a esa dirección IP: si la dirección IP cambia, tendrá que actualizar solo un registro DNS. Por lo tanto, nunca usa URL como https: // : / /, sino más bien https: // : / /. El registro que se va a crear es un registro de host (tipo A). Probablemente ya lo tenga si se dirige al servidor NAV por su nombre.

En segundo lugar, para cada inquilino debe crear un registro de alias (tipo CNAME) para resolver la ID alternativa del inquilino en el nombre de host.

Por ejemplo, tiene inquilinos Tenant1 y Tenant2 en una instancia NAV llamada NAVINSTANCE que se ejecuta en un servidor con la dirección IP 1.2.3.4. Su dominio es DOMAIN.COM.

1. El registro de host (A) hace posible la URL https://navserver.domain.com:7048/navinstance/OData/Company (‘CompanyName’) / WebServiceName? Tenant = Ten …

navegador A 1.2.3.4

2. Los registros de alias (CNAME) hacen posibles URL como https://tenant1.domain.com:7048/navinstance/OData/Company(‘CompanyName’)/WebServiceName y como https://tenant2.domain.com:7048/navinstance / OData / Company (‘CompanyName’) / WebServiceName respectivamente.

tenant1 CNAME navserver.domain.com.
tenant2 CNAME navserver.domain.com.

MadsW

En respuesta a AOS

Hola AOS,

Gracias por aclarar eso. Hoy en día usamos nombres de host, no IP, solo para simplificar las cosas. 🙂

Por lo que puedo recordar, ¿el problema con Powerpivot o Powerquery también ha estado presente en NAV 2016? No recuerdo si alguna vez llevé datos de múltiples inquilinos a PowerBI.

Le pediré al hoster que haga registros de CName. Está alojado en Azure, por lo que creo que debería ser posible.

Ya usamos cname para el nombre del servidor https://servername.navdomain.com, por lo que este sería https://tenantname.servername.navdomain.com, ¿verdad?

MIV

Disculpas por no aclarar de inmediato pero fue AOS quien resolvió el problema, por lo que la solución está disponible en su comentario.

@MIV

Si es posible, puede compartir su solución aquí para ayudar a otras personas que tienen el mismo problema que usted.

Atentamente,
Herbert

MIV

Problema resuelto y ahora funciona perfectamente.

¡Muchas gracias!

AOS

Esto ocurre con una instancia NAV de varios inquilinos si la propiedad ID alternativa no está configurada para el inquilino. El problema está más bien en el lado de NAV, ya lo he informado a Microsoft.

En breve, la instancia NAV de múltiples inquilinos es una arquitectura con un servicio (instancia) que aloja muchas entidades aisladas (inquilinos). Un URI de OData debe incluir el nombre del inquilino como parámetro, por ejemplo, https://MyNav.contoso.com:7048/NAV/OData/Company(‘MyCompany’)/MyQuery?tenant=MyTenant. Cada solicitud debe dirigirse al inquilino adecuado o, de lo contrario, la solicitud fallará.

Cuando PowerBI se conecta a dicha fuente, abre con éxito la conexión y recupera un conjunto de filas de «vista previa». El JSON de «vista previa» contiene un URI de metadatos, por ejemplo, https://MyNav.contoso.com:7048/NAV/OData/$metadata. Uno puede notar que? Tenant = MyTenant no se encuentra en el URI. (Esto es fácil de probar: pruebe https://MyNav.contoso.com:7048/NAV/OData/$metadata y fallará, pero si prueba https://MyNav.contoso.com:7048/NAV/OData/$ metadata? tenant = MyTenant, recibirá los metadatos.) PowerBI envía GET https://MyNav.contoso.com:7048/NAV/OData/$metadata y la respuesta es el error 401 «No autorizado». Una vez que PowerBI falló con la solicitud de metadatos, devolverá el error «Usuario no autorizado» al usuario. Excel simplemente ignora el error de solicitud de metadatos y entrega datos del feed.

Si un inquilino NAV tiene configurada la opción de identificación alternativa, el parámetro de inquilino se puede ignorar porque la identificación alternativa define de forma única un inquilino en un entorno de múltiples inquilinos. De hecho, Alternate ID es un nombre de host completo que básicamente cambia el URI de inquilino predeterminado https://MyNav.contoso.com:7048/NAV/OData/Company(‘MyCompany’)/MyQuery?tenant=MyTenant a https: // MyTenant .contoso.com: 7048 / NAV / OData / Company (‘MyCompany’) / MyQuery. El URI de metadatos se convierte en https://MyTenant.contoso.com:7048/NAV/OData/$metadata y es válido sin el parámetro de inquilino.

Por lo tanto, la solución es usar ID alternativos por inquilino en su instancia NAV de múltiples inquilinos. Si el uso de ID alternativos no es posible, espere que Microsoft confirme esto como un error y emita una solución para esto.

Anónimo

En respuesta a AOS

Hola,

¿Sabes tal vez, si hay alguna otra forma de hacerlo funcionar, sin usar la ID alternativa? No puedo usar la ID alternativa en mi caso, pero necesito conectarme desde PBI Desktop a la navegación de múltiples inquilinos usando OData.

Gracias por adelantado

Vicky_Song

@MIV

¿Podría proporcionarnos un rastro de violinista? Puede iniciar el seguimiento antes de realizar la conexión OData y compartir el archivo .saz guardado con nosotros a través del servicio de archivos en línea como OneDrive.

Atentamente,
Herbert

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *