Внедрение содержимого Power BI с помощью субъект-службы и сертификата
Проверка подлинности на основе сертификатов позволяет пройти проверку подлинности с помощью Azure Active Directory (Azure AD) с помощью сертификата клиента. Сертификат клиента может находиться на устройстве Windows, Android или iOS или храниться в Azure Key Vault.
Этот метод проверки подлинности позволяет управлять сертификатами (менять их или отзывать) из одного места, используя ЦС.
Дополнительные сведения о сертификатах в Azure AD см. на странице GitHub Потоки учетных данных клиента.
Метод
Шаг 1. Внедрение содержимого с помощью субъекта-службы
Чтобы внедрить содержимое с помощью субъекта-службы, следуйте инструкциям в разделе Внедрение содержимого Power BI с помощью субъект-службы и секрета приложения.
Примечание
Если у вас уже есть содержимое, внедренное с помощью субъекта-службы, пропустите этот шаг и перейдите к шагу 2.
Шаг 2. Создание сертификата
Сертификат можно получить из доверенного центра сертификации или создать самостоятельно.
В этом разделе описывается создание сертификата с помощью Azure Key Vault и скачивание CER-файла , содержащего открытый ключ.
Выполните вход в Microsoft Azure.
Найдите и выберите ссылку Key Vaults .
Выберите хранилище ключей, в которое нужно добавить сертификат.
Выберите Сертификаты.
Выберите Создать или импортировать.
Настройте поля в окне Создание сертификата следующим образом.
Метод создания сертификата: общий.
Имя сертификата: введите имя своего сертификата.
Тип центра сертификации (ЦС) : самозаверяющий сертификат
Тема: различающееся имя X.500
Имена DNS: 0 имен DNS
Срок действия (в месяцах) : введите срок действия сертификата
Тип содержимого: PKCS #12
Тип действия времени существования: автоматически продлить по прошествии указанного процента от времени существования
Процент от времени существования: 80
Расширенная настройка политик: не настроено
Нажмите кнопку создания. Созданный сертификат будет по умолчанию отключен. Активация может занять до пяти минут.
Выберите созданный сертификат.
Выберите "Скачать в формате CER". Загруженный файл будет содержать открытый ключ.
Шаг 3. Настройка проверки подлинности сертификата
В приложении Azure AD перейдите на вкладку "Секреты сертификатов&".
Выберите "Отправить сертификат " и отправьте 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 для получения сертификата.
Откройте проект в Visual Studio.
Выберите ToolsOptions>.
Найдите и выберите " Выбор учетной записи".
Добавьте учетную запись, имеющую доступ к Azure Key Vault.