分享方式:


使用服務主體和憑證內嵌 Power BI 內容 \(部分機器翻譯\)

憑證型驗證可讓您使用用戶端憑證透過 Microsoft Entra ID 進行驗證。 用戶端憑證可能位於 Windows、Android 或 iOS 裝置上,或用戶端憑證可以保留在 Azure Key Vault 中。

使用這種驗證方法,您就可從集中位置使用憑證授權單位 (CA) 來管理憑證,以進行輪替或撤銷。

您可以在 用戶端認證流程 GitHub 頁面中深入了解 Microsoft Entra ID 中的憑證。

方法

  1. 使用服務主體內嵌您的內容

  2. 建立憑證

  3. 設定憑證驗證

  4. 從 Azure Key Vault 取得憑證

  5. 使用服務主體與憑證進行驗證

步驟 1 - 使用服務主體內嵌您的內容

若要使用服務主體內嵌您的內容,請遵循使用服務主體與應用程式祕密內嵌 Power BI 內容中的指示。

注意

若您已經有使用服務主體內嵌的內容,請跳過此步驟,並繼續執行步驟 2

步驟 2 - 建立憑證

您可以向受信任的「憑證授權單位」購買憑證,或自行產生憑證。

本節說明如何使用 Azure Key Vault 來建立憑證,及如何下載包含公開金鑰的 .cer 檔案。

  1. 登入 Microsoft Azure

  2. 搜尋並選取 [金鑰保存庫] 連結。

    Azure 入口網站視窗的螢幕擷取畫面,其中顯示服務清單中的金鑰保存庫服務連結。

  3. 選取您要新增憑證的金鑰保存庫。

    Azure 入口網站視窗的螢幕擷取畫面,其中顯示金鑰保存庫清單中模糊金鑰保存庫的清單。

  4. 選取 [憑證]

    Azure 入口網站視窗的螢幕擷取畫面,其中顯示包含醒目提示 [憑證] 項目的 [金鑰保存庫] 頁面。

  5. 選取產生/匯入

    Azure 入口網站視窗的螢幕擷取畫面,其中顯示包含醒目提示 [產生/匯入] 項目的 [憑證] 窗格。

  6. 設定建立憑證欄位,如下所示:

    • 憑證建立方法 - 一般

    • 憑證名稱 - 輸入您的憑證名稱

    • 憑證授權單位 (CA) 的類型 - 自我簽署憑證

    • 主體 - X.500 辨別名稱

    • DNS 名稱 - 0 DNS 名稱

    • 有效期間 (月) - 輸入憑證的有效期間

    • 內容類型 - PKCS #12

    • 存留期動作類型 - 在指定的存留期百分比自動更新

    • 存留期百分比 - 80

    • 進階原則設定 - 未設定

  7. 選取 建立。 根據預設,剛建立的憑證會在停用狀態, 最多可能需要五分鐘才會啟用。

  8. 選取您建立的憑證。

  9. 選取 [以 CER 格式下載]。 下載的檔案含有公開金鑰。

    Azure 入口網站視窗的螢幕擷取畫面,其中顯示醒目提示的 [以 CER 格式下載] 按鈕。

步驟 3 - 設定憑證驗證

  1. 在您的 Microsoft Entra 應用程式中,選取 [憑證與秘密] 索引標籤。

    Azure 入口網站視窗的螢幕擷取畫面,其中顯示應用程式的 [憑證和秘密] 窗格。

  2. 選取 [上傳憑證],然後上傳您在此教學課程步驟 2 中建立及下載的 .cer 檔案。 該 .cer 檔案包含公開金鑰。

步驟 4 - 從 Azure Key Vault 取得憑證

使用受控服務識別 (MSI) 從 Azure Key Vault 取得憑證。 這個流程會需要取得包含公開及私密金鑰的 .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 是一項可讓您管理 Microsoft Entra 身分識別的功能。 設定後,就會讓 Visual Studio 對您的 Azure Key Vault 進行驗證。

注意

登入 Visual Studio 的使用者需要 Azure Key Vault 權限才能取得憑證。

  1. 在 Visual Studio 中,開啟您的專案。

  2. 選取 [工具] > [選項]

    Visual Studio 視窗的螢幕擷取畫面,其中顯示 [工具] 功能表中醒目提示的 [選項] 按鈕。

  3. 搜尋並選取 [帳戶選取]

    Visual Studio [選項] 視窗的螢幕擷取畫面,其中顯示搜尋結果中醒目提示的 [帳戶選取] 選項。

  4. 新增可存取您 Azure Key Vault 的帳戶。