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
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.
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
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();
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.
Récupérez la clé publique de la passerelle en appelant Obtenir la passerelle.
var gateway = pbiClient.Gateways.GetGatewayById(datasource.GatewayId);
Chiffrez les informations d’identification.
var credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.publicKey);
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);
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
Installez la passerelle de données locale sur votre ordinateur.
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();
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.
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");
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.