Autenticación y lectura / escritura mediante la API de JavaScript

Un usuario Pregunto ✅

sjorg

Tratando de hacer algo realmente muy simple, pero parece que tienes que escalar una pared de 100 pies en cada paso del camino.

Fondo:

1) Me gustaría usar este https://github.com/Microsoft/PowerBI-JavaScript API wrapper para enviar datos / incrustar informes de PowerBI en un «La aplicación posee datos» guión, autenticación del lado del servidor.

2) Siguiendo este tutorial, pero no puedo pasar del primer paso

https://docs.microsoft.com/en-us/power-bi/developer/walkthrough-push-data

Problema:

1) Antes de que pueda autenticarme, necesito registrar una aplicación. Está bien. Intenté seguir este https://docs.microsoft.com/en-us/power-bi/developer/register-app.

Pero, sorprendentemente, la página dev.powerbi.com/apps está rota.

Así que ahora, traté de registrarme a través del portal azure. Obtuve el ClientID al hacer esto, pero ¿Dónde obtengo ClientSecret, para llamar al lado del servidor API?

2) Supongamos que tengo ClientID y ClientSecret. Tratando de seguir este tutorial ahora: https://docs.microsoft.com/en-us/power-bi/developer/get-azuread-access-token

Pero esto solo tiene ejemplos que usan bibliotecas de autenticación C #. Y aunque https://msdn.microsoft.com/library/mt784614.aspx podría funcionar para obtener tokens de inserción para informes individuales, etc. No creo que funcione para enviar datos a conjuntos de datos.

Así que intenté usar esto:

https://github.com/AzureAD/azure-activedirectory-library-for-js

La muestra de código más cercana que puedo encontrar es

adalAuthenticationServiceProvider.init(
        {
            // Config to specify endpoints and similar for your app
            tenant: "52d4b072-9470-49fb-8721-bc3a1c9912a1", // Optional by default, it sends common
            clientId: "e9a5a8b6-8af7-4719-9821-0deef255f68e", // Required
            //localLoginUrl: "/login",  // optional
            //redirectUri : "your site", optional
            endpoints: endpoints  // If you need to send CORS api requests.
        }
)

pero no creo que esto funcione porque no se está utilizando ClientSecret.

¿Cómo me autentico en AAD desde javascript del lado del servidor?

3>Supongamos que ahora tengo un token de acceso, que teóricamente puedo usar con https://github.com/Microsoft/PowerBI-JavaScript

¿Cómo construyo una solicitud de API autenticada usando esa biblioteca? La documentación aquí https://powerbi.docs.apiary.io/#introduction/authenticate-with-power-bi dice que se debe usar una entrada de encabezado de autorización, pero eso es para una solicitud REST de vainilla … ¿cuál es la sintaxis para el contenedor de API?

No estoy seguro de si este proceso se hizo intencionalmente complicado + sin ejemplos, pero no puedo imaginar cómo alguien nuevo en esto realmente lo usa. Si alguien tiene alguna muestras de código, especialmente por la pieza de autenticación, estaría muy agradecido.

Se agradece cualquier ayuda. ¡Gracias!

@sjorg

Hasta donde yo sé, el contenedor de JavaScript de Power BI es solo para incrustaciones. No es para enviar datos en absoluto. En cuanto al escenario «La aplicación posee datos», generalmente requiere un Aplicación nativa, so ningún client_secret está involucrado. Para su interés, puede consultar la creación de la aplicación Client ID y Client Secret desde el nuevo portal de Microsoft Azure

Para obtener un token de acceso para enviar datos, es ADAL lib, la github lib que ya conocía. Puede hacer referencia a la muestra en la última respuesta de @trevormolag en este hilo.

Por cierto, ¿por qué todo en Javascript? Para «La aplicación posee datos», en realidad utiliza una cuenta maestra. Mientras usa ADAL, tendrá que realizar la autenticación a través de una ventana emergente de inicio de sesión. No soy un experto en ADAL, sin embargo, dudo que ADAL admita realizar la autenticación pasando el nombre de usuario y la contraseña en lugar de la ventana emergente. Incluso si admite, no creo que sea una buena idea codificar el nombre de usuario y la contraseña en su Javascript o página web, definitivamente es arriesgado.

@sjorg

Hasta donde yo sé, el contenedor de JavaScript de Power BI es solo para incrustaciones. No es para enviar datos en absoluto. En cuanto al escenario «La aplicación posee datos», generalmente requiere un Aplicación nativa, so ningún client_secret está involucrado. Para su interés, puede consultar la creación de la aplicación Client ID y Client Secret desde el nuevo portal de Microsoft Azure

Para obtener un token de acceso para enviar datos, es ADAL lib, la github lib que ya conocía. Puede hacer referencia a la muestra en la última respuesta de @trevormolag en este hilo.

Por cierto, ¿por qué todo en Javascript? Para «La aplicación posee datos», en realidad utiliza una cuenta maestra. Mientras usa ADAL, deberá realizar la autenticación a través de una ventana emergente de inicio de sesión. No soy un experto en ADAL, sin embargo, dudo que ADAL admita realizar la autenticación pasando el nombre de usuario y la contraseña en lugar de la ventana emergente. Incluso si es compatible, no creo que sea una buena idea codificar el nombre de usuario y la contraseña en su Javascript o página web, definitivamente es arriesgado.

Deja un comentario

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