Configurer les informations d’identification par programmation pour Power BI

S’APPLIQUE À : L’application possède des données L’utilisateur possède des données

Pour configurer programmatiquement les informations d’identification pour Power BI, suivez les étapes de cet article. Configurer des informations d’identification programmatiquement permet également de les chiffrer.

Les exemples de cet article se trouvent dans .NET en C#. Pour trouver des exemples dans Java, Python et PowerShell, accédez au référentiel respectif. Pour obtenir des exemples de chiffrement d’informations d’identification KeyPair, consultez Python et PowerShell. Pour obtenir des exemples de chiffrement d’informations d’identification KeyPair, consultez Python et PowerShell.

Remarque

  • L’utilisateur appelant ou le principal de service doit être un propriétaire de modèle sémantique ou un administrateur de passerelle.
  • Les sources de données cloud et les informations d’identification correspondantes sont gérées au niveau utilisateur.

Mettre à jour un flux d’informations d’identification pour des sources de données

  1. Découvrez les sources de données du modèle sémantique en appelant Obtenez des sources de données. Le corps de réponse de chaque source de données contient le type, les détails de la connexion, la passerelle et l’ID de source de données.

    // Select a datasource
    var datasources = pbiClient.Datasets.GetDatasources(datasetId).Value;
    var datasource = datasources.First();
    
  2. Construisez la chaîne d’informations d’identification conformément aux exemples de mise à jour de source de données. Le contenu de la chaîne d’informations d’identification dépend du type d’informations d’identification.

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

    Remarque

    Si vous utilisez des sources de données cloud, ne suivez pas les étapes de cette section. Appelez update Datasource pour définir les informations d’identification à l’aide de l’ID de passerelle et de l’ID de source de données que vous avez obtenus à l’étape 1.

  3. Récupérez la clé publique de la passerelle en appelant Obtenir la passerelle.

    var gateway = pbiClient.Gateways.GetGatewayById(datasource.GatewayId);
    
  4. Chiffrez les informations d’identification.

    var credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.publicKey);
    
  5. Générez les détails des informations d’identification avec des informations d’identification chiffrées.

    Utilisez la classe AsymetricKeyEncryptor avec la clé publique récupérée à l’étape 3.

    var credentialDetails = new CredentialDetails(
            credentials,
            PrivacyLevel.Private,
            EncryptedConnection.Encrypted,
            credentialsEncryptor);
    
  6. Définissez les informations d’identification en appelant Mettre à jour la source de données.

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

Configurer une nouvelle source de données pour une passerelle de données

  1. Installez la passerelle de données locale sur votre ordinateur.

  2. Récupérez l’ID et la clé publique de la passerelle en appelant Obtenir les passerelles.

    // Select a gateway
    var gateways = pbiClient.Gateways.GetGateways().Value;
    var gateway = gateways.First();
    
  3. Générez les détails des informations d’identification en suivant la procédure décrite dans la section Mettre à jour un flux d’informations d’identification pour les sources de données à l’aide de la clé publique de passerelle que vous avez récupérée à l’étape 2.

  4. Créer le corps de la requête.

    var request = new PublishDatasourceToGatewayRequest(
            dataSourceType: "SQL",
            connectionDetails: "{\"server\":\"myServer\",\"database\":\"myDatabase\"}",
            credentialDetails: credentialDetails,
            dataSourceName: "my sql datasource");
    
  5. Appelez l’API Créer une source de données.

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

Types d'informations d'identification

Quand vous appelez Créer une source de données ou Mettre à jour la source de données à partir de l’API REST Power BI sur une passerelle locale d’entreprise, chiffrez la valeur des informations d’identification à l’aide de la clé publique de passerelle.

Remarque

Le kit SDK .NET v3 peut également exécuter les exemples suivants du kit SDK .NET v2.

Windows et informations d’identification de 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);

Identifiants de clé

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

Informations d’identification OAuth2

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

Informations d’identification anonymes

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

Résolution des problèmes

Aucune passerelle ni aucun ID de la source de données n’est trouvé lors de l’appel à get data sources

Ce problème signifie que le modèle sémantique n’est pas lié à une passerelle. Lorsque vous créez un nouveau modèle sémantique, une source de données sans informations d’identification est créée automatiquement sur la passerelle cloud de l’utilisateur pour chaque connexion cloud. Cette passerelle cloud est utilisée pour stocker les informations d’identification des connexions cloud.

Une fois le modèle sémantique créé, une liaison automatique est créée entre le modèle sémantique et une passerelle appropriée, qui contient les sources de données correspondantes pour toutes les connexions. La liaison automatique échoue s’il n’existe pas une ou plusieurs passerelles appropriées.

Si vous utilisez des modèles sémantiques locaux, créez les sources de données locales manquantes et liez manuellement le modèle sémantique à une passerelle en utilisant Lier à la passerelle.

Pour découvrir les passerelles pouvant être liées, utilisez Découvrir des passerelles.