Condividi tramite


Configurare le credenziali a livello di codice per Power BI

SI APPLICA A: I dati sono di proprietà dell'app I dati sono di proprietà dell'utente

Per configurare le credenziali a livello di codice per Power BI, eseguire la procedura riportata nel presente articolo. La configurazione delle credenziali a livello di codice consente anche di crittografare le credenziali.

Nota

  • L'utente che esegue la chiamata deve essere un proprietario del modello semantico o un amministratore del gateway. È anche possibile usare un'entità servizio. Ad esempio, l'entità servizio può essere il proprietario del modello semantico.
  • Le origini dati cloud e le credenziali corrispondenti vengono gestite a livello di utente.

Aggiornare il flusso di credenziali per le origini dati

  1. Individuare le origini dati del modello semantico chiamando Recupera origini dati. Il corpo della risposta per ogni origine dati contiene tipo, dettagli della connessione, gateway e ID origine dati.

    // Select a datasource
    var datasources = pbiClient.Datasets.GetDatasources(datasetId).Value;
    var datasource = datasources.First();
    
  2. Compilare la stringa di credenziali in base agli esempi di aggiornamento dell'origine dati. Il contenuto della stringa di credenziali dipende dal tipo di credenziali.

    var credentials =  new BasicCredentials(username: "username", password :"*****");
    

    Nota

    Se si usano origini dati cloud, non seguire i passaggi successivi di questa sezione. Chiamare Aggiorna origine dati per impostare le credenziali con l'ID del gateway e l'ID dell'origine dati ottenuti nel passaggio 1.

  3. Recuperare la chiave pubblica del gateway chiamando Ottieni gateway.

    var gateway = pbiClient.Gateways.GetGatewayById(datasource.GatewayId);
    
  4. Crittografare le credenziali.

    var credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.publicKey);
    
  5. Compilare i dettagli delle credenziali con le credenziali crittografate.

    Usare la classe AssymetricKeyEncryptor con la chiave pubblica recuperata nel passaggio 3.

    var credentialDetails = new CredentialDetails(
            credentials,
            PrivacyLevel.Private,
            EncryptedConnection.Encrypted,
            credentialsEncryptor);
    
  6. Impostare le credenziali chiamando Aggiorna origine dati.

    pbiClient.Gateways.UpdateDatasource(datasource.GatewayId.Value, datasource.DatasourceId.Value, new UpdateDatasourceRequest(credentialDetails));
    

Configurare una nuova origine dati per un gateway dati

  1. Installare il gateway dati locale sul computer.

  2. Recuperare l’ID e la chiave pubblica del gateway chiamando Ottieni gateway.

    // Select a gateway
    var gateways = pbiClient.Gateways.GetGateways().Value;
    var gateway = gateways.First();
    
  3. Compilare i dettagli delle credenziali seguendo la stessa procedura descritta nella sezione Aggiornare un flusso di credenziali per le origini dati usando la chiave pubblica del gateway recuperata nel passaggio 2.

  4. Compilare il corpo della richiesta.

    var request = new PublishDatasourceToGatewayRequest(
            dataSourceType: "SQL",
            connectionDetails: "{\"server\":\"myServer\",\"database\":\"myDatabase\"}",
            credentialDetails: credentialDetails,
            dataSourceName: "my sql datasource");
    
  5. Chiamare l'API Create Datasource (Crea origine dati).

    pbiClient.Gateways.CreateDatasource(gateway.Id, request);
    

Tipi di credenziali

Quando si chiama Crea origine dati o Aggiorna origine dati dall'API REST di Power BI in un gateway enterprise locale, crittografare il valore delle credenziali mediante la chiave pubblica del gateway.

Nota

.NET SDK V3 può eseguire anche gli esempi di .NET SDK v2 seguenti.

Credenziali di Windows e di base

// Windows credentials
var credentials = new WindowsCredentials(username: "john", password: "*****");

// Or

// Basic credentials
var credentials = new BasicCredentials(username: "john", password: "*****");

var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);

Credenziali della chiave

var credentials = new KeyCredentials("TestKey");
var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);

Credenziali OAuth2

var credentials = new OAuth2Credentials("TestToken");
var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);

Credenziali anonime

var credentials = new AnonymousCredentials();
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.NotEncrypted);

Risoluzione dei problemi

Nessun gateway e ID di origine dati sono stati trovati durante la chiamata Ottieni origini dati

Questo problema significa che il modello semantico non è associato a un gateway. Quando si crea un nuovo modello semantico, viene creata automaticamente un'origine dati senza credenziali nel gateway cloud dell'utente per ciascuna connessione cloud. Il gateway cloud viene usato per archiviare le credenziali per le connessioni cloud.

Dopo aver creato il modello semantico, viene stabilita un'associazione automatica tra il modello semantico e un gateway appropriato, che contiene le origini dati corrispondenti per tutte le connessioni. L'associazione automatica ha esito negativo se non sono presenti uno o più gateway appropriati.

Se si usano modelli semantici locali, creare le origini dati locali eventualmente mancanti e associare manualmente il modello semantico a un gateway usando Associa al gateway.

Per individuare i gateway che possono essere associati, usare Individua gateway.