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
Copie las claves de API a la aplicación. Puede obtener las claves en el Azure Portal.
El token impone una notificación y tiene un tiempo de expiración.
El token se firma con las claves de acceso de la API.
El usuario solicita ver un informe.
El token se valida con claves de acceso de una API.
Colecciones de áreas de trabajo de Power BI 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:
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