Configurer les informations d’identification par programmation pour Power BI

S’APPLIQUE À : L’application est propriétaire des données L’utilisateur est propriétaire des données

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

Remarque

  • L’utilisateur appelant doit être propriétaire d’un modèle sémantique ou administrateur de passerelle. Vous pouvez également utiliser un principal de service. Par exemple, le principal de service peut être propriétaire du modèle sémantique.
  • 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. Générez la chaîne d’informations d’identification en fonction des 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 :"*****");
    

    Notes

    Si vous utilisez des sources de données cloud, ne suivez pas les étapes de cette section. Appelez Mettre à jour la source de données pour définir les informations d’identification à l’aide des ID de passerelle et 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.

Notes

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

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

Informations d’identification 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

La passerelle et l’ID de source de données sont introuvables lors de l’appel Obtenir des sources de données

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.

Étapes suivantes