Программное настройка учетных данных для Power BI

ОБЛАСТЬ ПРИМЕНЕНИЯ: Приложение владеет данными, принадлежащими пользователю данных

Выполните действия, описанные в этой статье, чтобы программно настроить учетные данные для Power BI. Настройка учетных данных программным способом позволяет шифровать учетные данные.

Примечание.

  • Вызывающий пользователь должен быть владельцем семантической модели или администратором шлюза. Вы также можете использовать субъект-службу. Например, субъект-служба может быть владельцем семантической модели.
  • Облачные источники данных и соответствующие учетные данные управляются на уровне пользователя.

Обновление потока учетных данных для источников данных

  1. Обнаружение источников данных семантической модели путем вызова get Datasources. Текст ответа для каждого источника данных содержит тип, сведения о подключении, шлюз и идентификатор источника данных.

    // Select a datasource
    var datasources = pbiClient.Datasets.GetDatasources(datasetId).Value;
    var datasource = datasources.First();
    
  2. Создайте строку учетных данных в соответствии с примерами источника данных update. Содержимое строки учетных данных зависит от типа учетных данных.

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

    Примечание.

    Если вы используете облачные источники данных, не выполните следующие действия, описанные в этом разделе. Вызов update Datasource , чтобы задать учетные данные с помощью идентификатора шлюза и идентификатора источника данных, полученного на шаге 1.

  3. Получите открытый ключ шлюза, вызвав шлюз Get.

    var gateway = pbiClient.Gateways.GetGatewayById(datasource.GatewayId);
    
  4. Шифрование учетных данных.

    var credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.publicKey);
    
  5. Создайте сведения об учетных данных с зашифрованными учетными данными.

    Используйте класс AsymetricKeyEncryptor с открытым ключом, извлеченным на шаге 3.

    var credentialDetails = new CredentialDetails(
            credentials,
            PrivacyLevel.Private,
            EncryptedConnection.Encrypted,
            credentialsEncryptor);
    
  6. Задайте учетные данные путем вызова update Datasource.

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

Настройка нового источника данных для шлюза данных

  1. Установите локальный шлюз данных на компьютере.

  2. Получите идентификатор шлюза и открытый ключ, вызвав шлюзы Get.

    // Select a gateway
    var gateways = pbiClient.Gateways.GetGateways().Value;
    var gateway = gateways.First();
    
  3. Выполните сборку сведений об учетных данных, выполнив процедуру, описанную в потоке учетных данных обновления для источников данных, с помощью открытого ключа шлюза, полученного на шаге 2.

  4. Создайте текст запроса.

    var request = new PublishDatasourceToGatewayRequest(
            dataSourceType: "SQL",
            connectionDetails: "{\"server\":\"myServer\",\"database\":\"myDatabase\"}",
            credentialDetails: credentialDetails,
            dataSourceName: "my sql datasource");
    
  5. Вызовите API создания источника данных.

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

Типы учетных данных

При вызове create Datasource или Update Datasource из REST API Power BI на локальном шлюзе зашифруйте значение учетных данных с помощью открытого ключа шлюза.

Примечание.

Пакет SDK для .NET версии 3 также может выполнять следующие примеры пакета SDK для .NET версии 2.

Учетные данные Windows и основные учетные данные

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

Ключевые учетные данные

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

Учетные данные OAuth2

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

Анонимные учетные данные

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

Устранение неполадок

При вызове источников данных не найдено идентификатора шлюза и источника данных

Эта проблема означает, что семантическая модель не привязана к шлюзу. При создании новой семантической модели источник данных без учетных данных создается автоматически на облачном шлюзе пользователя для каждого облачного подключения. Облачный шлюз используется для хранения учетных данных для облачных подключений.

После создания семантической модели создается автоматическая привязка между семантической моделью и подходящим шлюзом, который содержит соответствующие источники данных для всех подключений. Автоматическая привязка завершается ошибкой, если нет подходящего шлюза или шлюзов.

Если вы используете локальные семантические модели, создайте отсутствующие локальные источники данных и привязите семантику модели к шлюзу вручную с помощью привязки к шлюзу.

Чтобы обнаружить привязываемые шлюзы, используйте шлюзы обнаружения.