Aanmeldingsgegevens programmatisch configureren voor Power BI

Van toepassing op:✅ Power BI ingesloten analyses voor uw klanten (app-eigenaar van gegevens) en Power BI ingesloten analyses voor uw organisatie (gebruikersgegevens)

Als u referenties programmatisch wilt configureren voor Power BI, volgt u de stappen in dit artikel. Als u referenties programmatisch configureert, kunt u ook referenties versleutelen.

De voorbeelden in dit artikel bevinden zich in .NET in C#. Als u voorbeelden in Java, Python en PowerShell wilt vinden, gaat u naar de respectieve opslagplaats. Zie Python en PowerShell voor voorbeelden van KeyPair-referentieversleuteling. Zie Python en PowerShell voor voorbeelden van KeyPair-referentieversleuteling.

Notitie

  • De aanroepende gebruiker of service-principal moet een semantische modeleigenaar of een gatewaybeheerder zijn.
  • Cloudgegevensbronnen en de bijbehorende referenties worden beheerd op gebruikersniveau.

De referentiestroom voor gegevensbronnen bijwerken

  1. Ontdek de gegevensbronnen van het semantische model door Get Datasources aan te roepen. De hoofdtekst van het antwoord voor elke gegevensbron bevat het type, de verbindingsgegevens, de gateway en de gegevensbron-id.

    // Select a datasource
    var datasources = pbiClient.Datasets.GetDatasources(datasetId).Value;
    var datasource = datasources.First();
    
  2. Stel de tekenreeks met inloggegevens samen volgens de Voorbeelden voor het bijwerken van gegevensbronnen. De inhoud van de referentietekenreeks is afhankelijk van het type referenties.

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

    Notitie

    Als u cloudgegevensbronnen gebruikt, volgt u de volgende stappen in deze sectie niet. Roep Update datasource aan om de referenties in te stellen met behulp van de gateway-id en de gegevensbron-id die u in stap 1 hebt verkregen.

  3. Haal de openbare sleutel van de gateway op door Get Gateway aan te roepen.

    var gateway = pbiClient.Gateways.GetGatewayById(datasource.GatewayId);
    
  4. Versleutel de inloggegevens.

    var credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.publicKey);
    
  5. Bouw de referentiegegevens met versleutelde referenties.

    Gebruik de klasse AsymetricKeyEncryptor met de openbare sleutel die u in stap 3 hebt opgehaald.

    var credentialDetails = new CredentialDetails(
            credentials,
            PrivacyLevel.Private,
            EncryptedConnection.Encrypted,
            credentialsEncryptor);
    
  6. Stel referenties in door Update Datasource aan te roepen.

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

Een nieuwe gegevensbron configureren voor een gegevensgateway

  1. Installeer de On-premises-gegevensgateway op uw computer.

  2. Haal de gateway-id en de openbare sleutel op door Get Gateways uit te voeren.

    // Select a gateway
    var gateways = pbiClient.Gateways.GetGateways().Value;
    var gateway = gateways.First();
    
  3. Stel referentiegegevens samen door de procedure te volgen die wordt beschreven in de sectie stroom voor het bijwerken van referenties voor gegevensbronnen, met behulp van de openbare sleutel van de gateway die u in stap 2 hebt opgehaald.

  4. Stel de hoofdtekst van het verzoek samen.

    var request = new PublishDatasourceToGatewayRequest(
            dataSourceType: "SQL",
            connectionDetails: "{\"server\":\"myServer\",\"database\":\"myDatabase\"}",
            credentialDetails: credentialDetails,
            dataSourceName: "my sql datasource");
    
  5. Roep de Create Datasource API aan.

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

Typen aanmeldgegevens

Wanneer u Create Datasource of Update Datasource aanroept in de Power BI REST API op een on-premises gateway voor ondernemingen, versleutelt u de waarde van de aanmeldingsgegevens met behulp van de openbare sleutel van de gateway.

Notitie

.NET SDK v3 kan ook de volgende .NET SDK v2-voorbeelden uitvoeren.

Windows en standaardaanmeldingsgegevens

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

Belangrijkste inloggegevens

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

OAuth2-inloggegevens

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

Anonieme referenties

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

Probleemoplossing

Er is geen gateway- en gegevensbron-ID gevonden bij het aanroepen van Gegevensbronnen ophalen

Dit probleem betekent dat het semantische model niet is gebonden aan een gateway. Wanneer u een nieuw semantisch model maakt, wordt er automatisch een gegevensbron zonder referenties gemaakt op de cloudgateway van de gebruiker voor elke cloudverbinding. De cloudgateway wordt gebruikt om de referenties voor cloudverbindingen op te slaan.

Nadat u het semantische model hebt gemaakt, wordt er een automatische binding gemaakt tussen het semantische model en een geschikte gateway, die overeenkomende gegevensbronnen voor alle verbindingen bevat. Het automatisch koppelen mislukt als er geen geschikte gateway beschikbaar is.

Als u on-premises semantische modellen gebruikt, maakt u de ontbrekende on-premises gegevensbronnen en verbindt u het semantische model handmatig aan een gateway met behulp van Bind To Gateway.

Als u gateways wilt detecteren die kunnen worden verbonden, gebruikt u Discover Gateways.