Del via


Konfigurere legitimasjon programmatisk for Power BI

GJELDER FOR: Appen eier data Brukeren eier data

Hvis du vil konfigurere legitimasjon programmatisk for Power BI, følger du fremgangsmåten i denne artikkelen. Hvis du konfigurerer legitimasjon programmatisk, kan du også kryptere legitimasjon.

Merk

  • Anropsbrukeren må være semantisk modelleier eller gatewayadministrator. Du kan også bruke en tjenestekontohaver. Tjenestekontohaveren kan for eksempel være eieren av semantisk modell.
  • Skydatakilder og tilhørende legitimasjon administreres på brukernivå.

Oppdater legitimasjonsflyten for datakilder

  1. Oppdag datakildene for den semantiske modellen ved å kalle Hent datakilder. Svarteksten for hver datakilde inneholder typen, tilkoblingsdetaljene, gatewayen og datakilde-ID-en.

    // Select a datasource
    var datasources = pbiClient.Datasets.GetDatasources(datasetId).Value;
    var datasource = datasources.First();
    
  2. Bygg legitimasjonsstrengen i henhold til eksemplene på oppdateringsdatakilde. Innholdet i legitimasjonsstrengen avhenger av legitimasjonstypen.

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

    Merk

    Hvis du bruker datakilder i skyen, må du ikke følge de neste trinnene i denne delen. Ring Update Datasource for å angi legitimasjonen ved hjelp av gateway-ID-en og datakilde-ID-en du fikk i trinn 1.

  3. Hent den offentlige gatewaynøkkelen ved å kalle Hent gateway.

    var gateway = pbiClient.Gateways.GetGatewayById(datasource.GatewayId);
    
  4. Krypter legitimasjonen.

    var credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.publicKey);
    
  5. Bygg legitimasjonsdetaljene med kryptert legitimasjon.

    Bruk AsymetricKeyEncryptor-klassen med fellesnøkkelen hentet i trinn 3.

    var credentialDetails = new CredentialDetails(
            credentials,
            PrivacyLevel.Private,
            EncryptedConnection.Encrypted,
            credentialsEncryptor);
    
  6. Angi legitimasjon ved å kalle Oppdater datakilde.

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

Konfigurere en ny datakilde for en datagateway

  1. Installer lokal datagateway på maskinen.

  2. Hent gateway-ID-en og fellesnøkkelen ved å kalle Hent gatewayer.

    // Select a gateway
    var gateways = pbiClient.Gateways.GetGateways().Value;
    var gateway = gateways.First();
    
  3. Bygg legitimasjonsdetaljer ved å følge prosedyren som er beskrevet i delen oppdateringslegitimasjon for datakilder ved hjelp av gatewayens fellesnøkkel som du hentet i trinn 2.

  4. Bygg forespørselsteksten.

    var request = new PublishDatasourceToGatewayRequest(
            dataSourceType: "SQL",
            connectionDetails: "{\"server\":\"myServer\",\"database\":\"myDatabase\"}",
            credentialDetails: credentialDetails,
            dataSourceName: "my sql datasource");
    
  5. Kall API-en Opprett datakilde .

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

Legitimasjonstyper

Når du kaller Opprett datakilde eller Oppdater datakilde fra REST-API-en for Power BI på en lokal gateway for virksomheten, krypterer du legitimasjonsverdien ved hjelp av gatewayens offentlige nøkkel.

Merk

.NET SDK v3 kan også kjøre følgende .NET SDK v2-eksempler.

Windows og grunnleggende legitimasjon

// 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);

Nøkkellegitimasjon

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

OAuth2-legitimasjon

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

Anonym legitimasjon

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

Feilsøking

Finner ingen gateway- og datakilde-ID når du ringer hente datakilder

Dette problemet betyr at den semantiske modellen ikke er bundet til en gateway. Når du oppretter en ny semantisk modell, opprettes en datakilde uten legitimasjon automatisk på brukerens skygateway for hver skytilkobling. Skygatewayen brukes til å lagre legitimasjonen for skytilkoblinger.

Når du har opprettet den semantiske modellen, opprettes en automatisk binding mellom den semantiske modellen og en passende gateway, som inneholder samsvarende datakilder for alle tilkoblinger. Den automatiske bindingen mislykkes hvis det ikke finnes noen egnet gateway eller gatewayer.

Hvis du bruker lokale semantiske modeller, oppretter du de manglende lokale datakildene og binder den semantiske modellen til en gateway manuelt ved hjelp av Bind til gateway.

Hvis du vil oppdage gatewayer som kan bindes, kan du bruke Discover Gateways.