Внедрение содержимого Power BI с помощью субъект-службы и сертификата

Проверка подлинности на основе сертификатов позволяет пройти проверку подлинности с помощью Azure Active Directory (Azure AD) с помощью сертификата клиента. Сертификат клиента может находиться на устройстве Windows, Android или iOS или храниться в Azure Key Vault.

Этот метод проверки подлинности позволяет управлять сертификатами (менять их или отзывать) из одного места, используя ЦС.

Дополнительные сведения о сертификатах в Azure AD см. на странице GitHub Потоки учетных данных клиента.

Метод

  1. Внедрите содержимое с помощью субъекта-службы.

  2. Создайте сертификат.

  3. Настройте проверку подлинности сертификата.

  4. Получите сертификат из Azure Key Vault.

  5. Выполните проверку подлинности, используя субъект-службу и сертификат.

Шаг 1. Внедрение содержимого с помощью субъекта-службы

Чтобы внедрить содержимое с помощью субъекта-службы, следуйте инструкциям в разделе Внедрение содержимого Power BI с помощью субъект-службы и секрета приложения.

Примечание

Если у вас уже есть содержимое, внедренное с помощью субъекта-службы, пропустите этот шаг и перейдите к шагу 2.

Шаг 2. Создание сертификата

Сертификат можно получить из доверенного центра сертификации или создать самостоятельно.

В этом разделе описывается создание сертификата с помощью Azure Key Vault и скачивание CER-файла , содержащего открытый ключ.

  1. Выполните вход в Microsoft Azure.

  2. Найдите и выберите ссылку Key Vaults .

    A screenshot that shows a link to the key vault in the Azure portal.

  3. Выберите хранилище ключей, в которое нужно добавить сертификат.

    A screenshot showing a list of blurred out key vaults in the Azure portal.

  4. Выберите Сертификаты.

    A screenshot that shows the Key vaults page with Certificates called out.

  5. Выберите Создать или импортировать.

    A screenshot that shows the Certificate pane with Generate / Import called out.

  6. Настройте поля в окне Создание сертификата следующим образом.

    • Метод создания сертификата: общий.

    • Имя сертификата: введите имя своего сертификата.

    • Тип центра сертификации (ЦС) : самозаверяющий сертификат

    • Тема: различающееся имя X.500

    • Имена DNS: 0 имен DNS

    • Срок действия (в месяцах) : введите срок действия сертификата

    • Тип содержимого: PKCS #12

    • Тип действия времени существования: автоматически продлить по прошествии указанного процента от времени существования

    • Процент от времени существования: 80

    • Расширенная настройка политик: не настроено

  7. Нажмите кнопку создания. Созданный сертификат будет по умолчанию отключен. Активация может занять до пяти минут.

  8. Выберите созданный сертификат.

  9. Выберите "Скачать в формате CER". Загруженный файл будет содержать открытый ключ.

    A screenshot that shows the download in cer format button.

Шаг 3. Настройка проверки подлинности сертификата

  1. В приложении Azure AD перейдите на вкладку "Секреты сертификатов&".

    A screenshot that shows the certificates and secrets pane for an app in the Azure portal.

  2. Выберите "Отправить сертификат " и отправьте CER-файл , созданный и скачанный на шаге 2 этого руководства. В CER-файле содержится открытый ключ.

Шаг 4. Получение сертификата из Azure Key Vault

Для получения сертификата из Azure Key Vault используйте управляемое удостоверение службы (MSI). Этот процесс включает получение сертификата PFX, который содержит как открытый, так и закрытый ключи.

См. пример кода чтения сертификата из Azure Key Vault. Если вы хотите использовать Visual Studio, см. статью Настройка Visual Studio для использования MSI.

private X509Certificate2 ReadCertificateFromVault(string certName)
{
    var serviceTokenProvider = new AzureServiceTokenProvider();
    var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(serviceTokenProvider.KeyVaultTokenCallback));
    CertificateBundle certificate = null;
    SecretBundle secret = null;

    certificate = keyVaultClient.GetCertificateAsync($"https://{KeyVaultName}.vault.azure.net/", certName).Result;
    secret = keyVaultClient.GetSecretAsync(certificate.SecretIdentifier.Identifier).Result;
    
    return new X509Certificate2(Convert.FromBase64String(secret.Value));
}

Шаг 5. Проверка подлинности с помощью субъект-службы и сертификата

Чтобы проверить подлинность приложения, можно использовать субъект-службу и сертификат, хранящийся в Azure Key Vault, подключившись к Azure Key Vault.

Пример подключения и чтения сертификата из Azure Key Vault см. в приведенном ниже коде.

Примечание

Если у вас уже есть сертификат, созданный вашей организацией, отправьте PFX-файл в Azure Key Vault.

// Preparing needed variables
var Scope = "https://analysis.windows.net/powerbi/api/.default"
var ApplicationId = "{YourApplicationId}"
var tenantSpecificURL = "https://login.microsoftonline.com/{YourTenantId}/"
X509Certificate2 certificate = ReadCertificateFromVault(CertificateName);

// Authenticating with a SP and a certificate
public async Task<AuthenticationResult> DoAuthentication(){
    IConfidentialClientApplication clientApp = null;
    clientApp = ConfidentialClientApplicationBuilder.Create(ApplicationId)
                                                    .WithCertificate(certificate)
                                                    .WithAuthority(tenantSpecificURL)
                                                    .Build();
    return await clientApp.AcquireTokenForClient(Scope).ExecuteAsync();
}

Настройка Visual Studio для использования MSI

При создании внедренного решения может быть полезно настроить Visual Studio для использования управляемого удостоверения службы (MSI). MSI — это функция, с помощью которой вы сможете управлять своим удостоверением Azure AD. После настройки она позволит Visual Studio пройти проверку подлинности в Azure Key Vault.

Примечание

Пользователь, который входит в Visual Studio, должен иметь разрешения Azure Key Vault для получения сертификата.

  1. Откройте проект в Visual Studio.

  2. Выберите ToolsOptions>.

    A screenshot showing the options button in the tools menu in Visual Studio.

  3. Найдите и выберите " Выбор учетной записи".

    A screenshot showing the account selection option in the Visual Studio options window.

  4. Добавьте учетную запись, имеющую доступ к Azure Key Vault.

Дальнейшие действия