Autenticazione e autorizzazione con Power BI Embedded

Il servizio Power BI Embedded usa le chiavi e i token dell'app per l'autenticazione e l'autorizzazione anziché usare l'autenticazione esplicita dell'utente finale. In questo modello è l'applicazione a gestire l'autenticazione e l'autorizzazione degli utenti finali. Se necessario, l'app crea e invia i token dell'app al servizio Microsoft per richiedere il rendering del report richiesto. Questo modello non richiede che l'applicazione usi Azure Active Directory per l'autenticazione e l'autorizzazione dell'utente, sebbene sia possibile.

Due modalità di autenticazione

Chiave : è possibile usare le chiavi per tutte le chiamate API REST di Power BI Embedded. Per trovare le chiavi nel portale di Azure, fare clic su Tutte le impostazioni e quindi su Chiavi di accesso. Occorre gestire sempre la chiave come se fosse una password. Queste chiavi sono autorizzate a effettuare qualsiasi chiamata API REST su una raccolta specifica di aree di lavoro.

Per usare una chiave su una chiamata REST, aggiungere l'intestazione di autorizzazione seguente:

Authorization: AppKey {your key}

Token dell'app : i token dell'app vengono usati per tutte le richieste di incorporamento. Sono stati progettati per essere eseguiti sul lato client, quindi sono limitati a un singolo report ed è consigliabile impostare una scadenza.

I token dell'app sono token JSON Web (JWT, JSON Web Token) firmati da una delle chiavi dell'utente.

Il token dell'app può contenere le attestazioni seguenti:

Attestazione Descrizione
ver Versione del token dell'app. La versione corrente è&0;.2.0.
aud Destinatario previsto per il token. Per Power BI Embedded usare: "https://analysis.windows.net/powerbi/api".
iss Stringa che indica l'applicazione che ha emesso il token.
type Tipo di token dell'app da creare. L'unico tipo attualmente supportato è embed.
wcn Nome della raccolta di aree di lavoro per cui viene emesso il token.
wid ID dell'area di lavoro per cui viene emesso il token.
rid ID del report per cui viene emesso il token.
username (facoltativa) Usata con la sicurezza a livello di riga, questa stringa può semplificare l'identificazione dell'utente quando si applicano le regole di sicurezza a livello di riga.
roles (facoltativa) Stringa contenente i ruoli da selezionare quando si applicano le regole di sicurezza a livello di riga. Se si passa più di un ruolo, è consigliabile passarli come matrice di stringhe.
scp (facoltativo) Stringa contenente gli ambiti delle autorizzazioni. Se si passa più di un ruolo, è consigliabile passarli come matrice di stringhe.
exp (facoltativa) Indica l'ora di scadenza del token. Questi valori devono essere passati come timestamp Unix.
nbf (facoltativa) Indica l'ora di inizio della validità del token. Questi valori devono essere passati come timestamp Unix.

Un token dell'app di esempio avrà un aspetto analogo al seguente:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ2ZXIiOiIwLjIuMCIsInR5cGUiOiJlbWJlZCIsIndjbiI6Ikd1eUluQUN1YmUiLCJ3aWQiOiJkNGZlMWViMS0yNzEwLTRhNDctODQ3Yy0xNzZhOTU0NWRhZDgiLCJyaWQiOiIyNWMwZDQwYi1kZTY1LTQxZDItOTMyYy0wZjE2ODc2ZTNiOWQiLCJzY3AiOiJSZXBvcnQuUmVhZCIsImlzcyI6IlBvd2VyQklTREsiLCJhdWQiOiJodHRwczovL2FuYWx5c2lzLndpbmRvd3MubmV0L3Bvd2VyYmkvYXBpIiwiZXhwIjoxNDg4NTAyNDM2LCJuYmYiOjE0ODg0OTg4MzZ9.v1znUaXMrD1AdMz6YjywhJQGY7MWjdCR3SmUSwWwIiI

Quando viene decodificato, avrà un aspetto analogo al seguente:

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
}

All'interno di SDK sono disponibili metodi che semplificano la creazione di apptokens. Ad esempio, per .NET è possibile esaminare la classe Microsoft.PowerBI.Security.PowerBIToken e i metodi CreateReportEmbedToken.

Per l'SDK di .NET, è possibile fare riferimento ad Ambiti.

Ambiti

Quando si usano token di incorporamento, può essere opportuno limitare l'uso delle risorse a cui si concede l'accesso. Per questo motivo, è possibile generare un token con autorizzazioni con ambito.

Di seguito sono riportati gli ambiti disponibili per Power BI Embedded.

Scope Descrizione
Dataset.Read Concede l'autorizzazione per leggere il set di dati specificato.
Dataset.Write Concede l'autorizzazione per scrivere il set di dati specificato.
Dataset.ReadWrite Concede l'autorizzazione per leggere e scrivere il set di dati specificato.
Report.Read Concede l'autorizzazione per visualizzare il report specificato.
Report.ReadWrite Concede l'autorizzazione per visualizzare e modificare il report specificato.
Workspace.Report.Create Concede l'autorizzazione per creare un nuovo report nell'area di lavoro specificata.
Workspace.Report.Copy Concede l'autorizzazione per clonare un report esistente nell'area di lavoro specificata.

È possibile specificare più ambiti mediante uno spazio tra gli ambiti come nel caso seguente.

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

Attestazioni e ambiti necessari

scp: {scopesClaim} scopesClaim può essere una stringa o una matrice di stringhe, che annota le autorizzazioni concesse nelle risorse dell'area di lavoro (Report, Dataset, e così via)

Un token decodificato, con ambiti definiti, sarebbe simile al seguente.

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
}

Operazioni e ambiti

Operazione Risorsa di destinazione Autorizzazioni del token
Creare (in memoria) un nuovo report basato su un set di dati. Set di dati Dataset.Read
Creare (in memoria) un nuovo report basato su un set di dati e salvarlo. Set di dati Dataset.Read
Workspace.Report.Create
Visualizzare ed esplorare/modificare (in memoria) un report esistente. Report.Read implica Dataset.Read. In questo modo le autorizzazioni non potranno salvare le modifiche. Report Report.Read
Modificare e salvare un report esistente. Report Report.ReadWrite
Salvare una copia di un report (Salva con nome). Report Report.Read
Workspace.Report.Copy

Funzionamento del flusso

  1. È necessario copiare le chiavi API nell'applicazione. È possibile ottenere le chiavi nel portale di Azure.

  2. Il token esegue l'asserzione di un'attestazione e ha una scadenza.

  3. Con le chiavi di accesso API si accede al token.

  4. L'utente richiede di visualizzare un report.

  5. Il token viene convalidato con chiavi di accesso API.

  6. Power BI Embedded invia un report all'utente.

Dopo che Power BI Embedded invia un report all'utente, l'utente può visualizzare il report nella propria app. Ad esempio, se è stato importato l'esempio Analyzing Sales Data PBIX, l'app Web di esempio sarà simile alla seguente:

Vedere anche

CreateReportEmbedToken
Introduzione all'esempio di Microsoft Power BI Embedded
Scenari comuni di Microsoft Power BI Embedded
Introduzione a Microsoft Power BI Embedded
Repository Git PowerBI-CSharp
Altre domande? Contattare la community di Power BI