Condividi tramite


Configurare le credenziali a livello di codice per Power BI

SI APPLICA A: L'app possiede dati di proprietà dell'utente

Per configurare le credenziali a livello di codice per Power BI, seguire la procedura descritta in questo articolo. La configurazione delle credenziali a livello di codice consente anche di crittografare le credenziali.

Nota

  • L'utente chiamante 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 delle 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 il tipo, i dettagli della connessione, il gateway e l'ID origine dati.

    // Select a datasource
    var datasources = pbiClient.Datasets.GetDatasources(datasetId).Value;
    var datasource = datasources.First();
    
  2. Compilare la stringa delle credenziali in base agli esempi dell'origine dati di aggiornamento. 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 in questa sezione. Chiamare Update Datasource per impostare le credenziali usando l'ID gateway e l'ID origine dati ottenuti nel passaggio 1.

  3. Recuperare la chiave pubblica del gateway chiamando Get 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 credenziali crittografate.

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

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

    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 nel computer.

  2. Recuperare l'ID gateway e la chiave pubblica chiamando Get Gateways.

    // Select a gateway
    var gateways = pbiClient.Gateways.GetGateways().Value;
    var gateway = gateways.First();
    
  3. Compilare i dettagli delle credenziali seguendo la procedura descritta nella sezione Relativa al flusso delle credenziali di aggiornamento 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 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 locale aziendale, crittografare il valore delle credenziali usando la chiave pubblica del gateway.

Nota

.NET SDK v3 può anche eseguire gli esempi .NET SDK v2 seguenti.

Credenziali di base e Windows

// 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 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 origine dati vengono trovati quando si chiamano le origini dati

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

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

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

Per individuare i gateway associabili, usare Individua gateway.