Compartir a través de


Autenticación y autorización con Colecciones de áreas de trabajo de Power BI

Colecciones de áreas de trabajo de Power BI usa claves y tokens de aplicación para realizar la autenticación y la autorización en lugar de la autenticación explícita de usuario final. En este modelo, la aplicación, la aplicación administra la autenticación y la autorización de sus usuarios finales. Si es necesario, la aplicación crea y envía los tokens de aplicación que indican a nuestro servicio que presente el informe solicitado. En este diseño no es necesario que la aplicación use Azure Active Directory para la autenticación y la autorización de usuarios, aunque puede hacerlo.

Importante

Las colecciones de áreas de trabajo de Power BI están en desuso y estarán disponibles hasta junio de 2018 o hasta cuando lo indique su contrato. Se recomienda planear la migración a Power BI Embedded para evitar la interrupción de la aplicación. Para más información sobre cómo migrar los datos a Power BI Embedded, consulte Migración de contenido de Colección de áreas de trabajo de Power BI a Power BI Embedded.

Dos modos de autenticación

Clave : puede usar claves para todas las llamadas API rest de colecciones de áreas de trabajo de Power BI. Las claves pueden encontrarse en Microsoft Azure Portal seleccionando Toda la configuración y, luego, Claves de acceso. Debe tratar siempre la clave como si fuese una contraseña. Estas claves tienen permisos para llamar a cualquier API de REST en una colección de área de trabajo determinada.

Para utilizar una clave en una llamada de REST, agregue el siguiente encabezado de autorización:

Authorization: AppKey {your key}

Token de aplicación : los tokens de aplicación se utilizan para todas las solicitudes de inserción. Están diseñados para ejecutarse en el lado cliente, por lo que están restringidos a un único informe y se recomienda establecer un tiempo de expiración.

Los tokens de aplicación son un JWT (JSON Web Token) que está firmado por una de sus claves.

El token de la aplicación puede contener las siguientes notificaciones:

Notificación Descripción
ver La versión del token de aplicación. La versión actual es 0.2.0.
Aud El destinatario previsto del token. Para las colecciones de áreas de trabajo de Power BI, use: https://analysis.windows.net/powerbi/api.
iss Una cadena que indica la aplicación que emitió el token.
type El tipo de token de aplicación que se está creando. El único tipo admitido actualmente es insertar.
wcn El nombre de la colección de área de trabajo para el que se emite el token.
Wid El id. del área de trabajo para el que se emite el token.
Librar El id. del informe para el que se emite el token.
username (opcional) Se utiliza con RLS y es una cadena que ayuda a identificar el usuario cuando se aplican las reglas RLS.
roles (opcional) Una cadena que contiene los roles que seleccione al aplicar las reglas de seguridad de nivel de fila. Si se pasa más de un rol, se deben pasar como una matriz de cadenas.
scp (opcional) Cadena que contiene los ámbitos de los permisos. Si se pasa más de un rol, se deben pasar como una matriz de cadenas.
exp (opcional) Indica la hora a la que caducará el token. Se deben pasar como marcas de tiempo de Unix.
nbf (opcional) Indica la hora a la que comienza a ser válido el token. Se deben pasar como marcas de tiempo de Unix.

Un token de aplicación de ejemplo tiene el siguiente aspecto:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ2ZXIiOiIwLjIuMCIsInR5cGUiOiJlbWJlZCIsIndjbiI6Ikd1eUluQUN1YmUiLCJ3aWQiOiJkNGZlMWViMS0yNzEwLTRhNDctODQ3Yy0xNzZhOTU0NWRhZDgiLCJyaWQiOiIyNWMwZDQwYi1kZTY1LTQxZDItOTMyYy0wZjE2ODc2ZTNiOWQiLCJzY3AiOiJSZXBvcnQuUmVhZCIsImlzcyI6IlBvd2VyQklTREsiLCJhdWQiOiJodHRwczovL2FuYWx5c2lzLndpbmRvd3MubmV0L3Bvd2VyYmkvYXBpIiwiZXhwIjoxNDg4NTAyNDM2LCJuYmYiOjE0ODg0OTg4MzZ9.v1znUaXMrD1AdMz6YjywhJQGY7MWjdCR3SmUSwWwIiI

Cuando se descodifica, es similar a lo siguiente:

Header

{
    typ: "JWT",
    alg: "HS256:
}

Body

{
  "ver": "0.2.0",
  "wcn": "SupportDemo",
  "wid": "ca675b19-6c3c-4003-8808-1c7ddc6bd809",
  "rid": "96241f0f-abae-4ea9-a065-93b428eddb17",
  "iss": "PowerBISDK",
  "aud": "https://analysis.windows.net/powerbi/api",
  "exp": 1360047056,
  "nbf": 1360043456
}

Hay métodos disponibles en los SDK que facilitan la creación de tokens de aplicación. Por ejemplo, para .NET puede observar la clase Microsoft.PowerBI.Security.PowerBIToken y los métodos CreateReportEmbedToken.

Para el SDK de .NET, puede consultar Ámbitos.

Ámbitos

Si usa tokens de inserción, puede restringir el uso de los recursos a los que proporciona acceso. Por este motivo, puede generar un token con permisos con ámbito.

Los siguientes son los ámbitos disponibles para Colecciones de áreas de trabajo de Power BI.

Ámbito Descripción
Dataset.Read Proporciona permiso para leer el conjunto de datos especificado.
Dataset.Write Proporciona permiso para escribir en el conjunto de datos especificado.
Dataset.ReadWrite Proporciona permiso para leer el conjunto de datos especificado y escribir en él.
Report.Read Proporciona permiso para ver el informe especificado.
Report.ReadWrite Proporciona permiso para ver y editar el informe especificado.
Workspace.Report.Create Proporciona permiso para crear un informe nuevo dentro del área de trabajo especificada.
Workspace.Report.Copy Proporciona permiso para clonar un informe existente dentro del área de trabajo especificada.

Puede suministrar varios ámbitos; para ello, use un espacio entre los ámbitos de la siguiente manera.

string scopes = "Dataset.Read Workspace.Report.Create";

Notificaciones necesarias: ámbitos

scp: {scopesClaim} scopesClaim puede ser una cadena o una matriz de cadenas, teniendo en cuenta los permisos asociados a los recursos del área de trabajo (Report, Dataset, etc.)

Un token descodificado, con ámbitos definidos, tendría un aspecto similar al siguiente:

Header

{
    typ: "JWT",
    alg: "HS256:
}

Body

{
  "ver": "0.2.0",
  "wcn": "SupportDemo",
  "wid": "ca675b19-6c3c-4003-8808-1c7ddc6bd809",
  "rid": "96241f0f-abae-4ea9-a065-93b428eddb17",
  "scp": "Report.Read",
  "iss": "PowerBISDK",
  "aud": "https://analysis.windows.net/powerbi/api",
  "exp": 1360047056,
  "nbf": 1360043456
}

Operaciones y ámbitos

Operación Recurso de destino Permisos de token
Crea (en memoria) un informe nuevo basado en un conjunto de datos. Conjunto de datos Dataset.Read
Crea (en memoria) un informe nuevo basado en un conjunto de datos y guarda el informe. Conjunto de datos * Dataset.Read
* Workspace.Report.Create
Ve y explora o edite (en memoria) un informe existente. Report.Read implica Dataset.Read. Report.Read no permite guardar las ediciones. Informe Report.Read
Edita y guarda un informe existente. Informe Report.ReadWrite
Guarda una copie de un informe (Guardar como). Informe * Report.Read
* Workspace.Report.Copy

Funcionamiento del flujo

  1. Copie las claves de API a la aplicación. Puede obtener las claves en el Azure Portal.

    Dónde encontrar las claves de API en Azure Portal

  2. El token impone una notificación y tiene un tiempo de expiración.

    Flujo de tokens de aplicación: el token impone una notificación

  3. El token se firma con las claves de acceso de la API.

    Flujo de tokens de aplicación: el token se firma

  4. El usuario solicita ver un informe.

    Flujo de tokens de aplicación: el usuario solicita ver un informe

  5. El token se valida con claves de acceso de una API.

    Flujo de tokens de aplicación: el token se valida

  6. Colecciones de áreas de trabajo de Power BI envía un informe al usuario.

    Flujo de tokens de aplicación: el servicio envía un informe al usuario

Después de que Colecciones de áreas de trabajo de Power BI envíe un informe al usuario, este podrá ver el informe en su aplicación personalizada. Por ejemplo, si ha importado el archivo PBIX de ejemplo de análisis de datos de venta, la aplicación web de ejemplo tendría el siguiente aspecto:

Ejemplo de informe insertado en la aplicación

Consulte también

CreateReportEmbedToken
Introducción a ejemplos de Colecciones de áreas de trabajo de Power BI
Escenarios comunes de las colecciones de áreas de trabajo de Power BI
Introducción a las colecciones de áreas de trabajo de Power BI
Repositorio GIT PowerBI-CSharp

¿Tiene más preguntas? Pruebe la comunidad de Power BI