Отримання сертифіката RSAT середовища в zip-файлі

Примітка

Групи інтересів спільноти тепер переміщено з Yammer до Microsoft Viva Engage. Щоб приєднатися до спільноти Viva Engage та взяти участь в останніх обговореннях, заповніть форму Запит на доступ до спільноти Viva Engage фінансів і операцій і виберіть спільноту, до якої потрібно приєднатися.

Важливо

Починаючи з лютого 2026 року, нові клієнти не можуть створювати проєкти в Microsoft Dynamics Lifecycle Services для Microsoft Dynamics 365 Finance, Microsoft Dynamics 365 Human Resources, Microsoft Dynamics 365 Supply Chain Management та Microsoft Dynamics 365 Project Operations. Натомість нові клієнти мають використовувати Центр адміністрування Power Platform . Докладні відомості див. в статті Закріплення створення проекту служб життєвого циклу.

Ви можете отримати пакет сертифікатів Regression Suite Automation Tool (RSAT) для середовища за допомогою служб життєвого циклу Microsoft Dynamics за допомогою API середовища життєвого циклу служб. Цей API повертає zip-файл із кодуванням Base 64 та пароль, закодований базою 64 для пароля приватного сертифіката.

Повний процес споживання zip можна знайти на сторінці інсталяції та конфігурації regression Suite Automation Tool .

Дозволи

Програма API

Щоб викликати цей API, потрібен один із наведених нижче дозволів. Докладні відомості про дозволи та способи їх вибору див. в статті API руху бази даних – автентифікація.

Тип дозволу Дозволи (від найменш привілейованих до більшості привілейованих)
Делегований (робочий або навчальний обліковий запис) user_impersonation

Служби життєвого циклу

У службах життєвого циклу користувача, який використовується в автентифікації OAuth API, потрібно додати до проекту як власника проекту або адміністратора середовища. Користувач повинен прийняти запрошення до проекту.

Запит HTTP

Щоб отримати zip-файл для сертифіката RSAT середовища, скористайтеся наведеною нижче кінцевою точкою GET.

Отримання сертифіката RSAT за середовищем

GET /environmentinfo/v1/rsatdownload/project/{projectId}/environment/{environmentId}

Заголовки запитів

Використовуйте наведені нижче значення заголовків у заголовку запиту HTTP.

Заголовок Цінність
Авторизація Носій {token} (обов'язково)
"x-ms-version" '2017-09-15' (обов'язково)
Тип вмісту application/json

Тіло запиту

Для цього способу не потрібно вказувати текст запиту.

Response

протокол HTTP

Відповідь завжди є відповіддю "200 OK", якщо ви не автентифіковані належним чином. Обов'язково використовуйте властивість IsSuccess , щоб оцінити успішність або невдачу дії.

Дані

Властивість Опис
СертифікатZipEncoded Zip, що містить . PFX і . ФАЙЛИ CER у масиві байтів із основою 64.
СертифікатSecretEncoded Приватний секрет приватного сертифіката як базовий рядок із кодуванням 64. Це змінить кожний запит.
Відбиток сертифіката Відбиток приватного сертифіката.
ExpirationDateTimeUTC Дата й час у форматі UTC (відображаються в повнотекстовому форматі), після чого сертифікат неприпустимий.
ExpirationISODateTimeUTC Дата й час у форматі UTC (відображається у форматі ISO 8606), після якого сертифікат неприпустимий.
Ім’я файлу Ім'я файлу zip, що повертається.

Приклад відповіді

Успішна відповідь на запит на рівні проекту

{
    "Data": {
        "CertificateZipEncoded": "<base 64-encoded zip>",
        "CertificateSecretEncoded": "<base 64-encoded password>",
        "CertificateThumbprint": "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00",
        "ExpirationDateTimeUTC": "Sunday, September 4, 2022 4:00:00 AM",
        "ExpirationISODateTimeUTC": "2022-09-04T04:00:00Z",
        "Filename": "RSATCertificate_TestEnv1_20210805-100102.zip"
    },
    "IsSuccess": true,
    "OperationActivityId": "2234bff0-432d-478b-a5ac-1ccb529ee698",
    "ErrorMessage": null,
    "VersionEOL": "9999-12-31T23:59:59.9999999"
}

Аналіз даних за допомогою PowerShell

У наведеному нижче прикладі сценарій взаємодіє з API служби життєвого циклу, щоб завантажити zip-файл сертифіката RSAT на локальний комп'ютер. У вікні консолі відображається пароль приватного сертифіката. Потрібно вказати маркер доступу.

# Basic Lifecycle Services API RSAT certificate zip download script
#
# This will download the RSAT certificate bundle for an environment
# to the current directory and display the private certificate's password
# in the console.
#
# The user used in the API authentication must be added to the
# project as an Environment Admin or Project Owner

# Configuration
$accessToken = "{access token string}";
$projId = {project id integer};
$envId = "{environment id GUID}"
$baseLCSAPI = "lcsapi.lcs.dynamics.com";

$url = "https://$baseLCSAPI/environmentinfo/v1/rsatdownload/project/$projId/environment/$envId"
 
$headers = @{
    "Authorization" = "Bearer $accessToken"
    "x-ms-version" = "2017-09-15"
    "Content-Type" = "application/json"
}

# Reset variable between executions
$certificateResponse = $null 
$shouldRetry = $false

do {
    $shouldRetry = $false

    try {
        # GET request to Lifecycle Services API
        $certificateResponse = Invoke-RestMethod $url -Method 'GET' -Headers $headers
    } catch {
        # Check if this is a HTTP 429 error
        if ($_.Exception.Response.StatusCode.value__ -eq 429) {

            # Too many requests for this environment, wait and retry
            $shouldRetry = $true
            $retrySeconds = [int]$_.Exception.Response.Headers['Retry-After']
            Write-Host "Too many requests - Retrying in $retrySeconds seconds"
            Start-Sleep -Seconds $retrySeconds
        } else {
            throw
        }
    }
} while($shouldRetry)

if ((-not $certificateResponse.IsSuccess) -or ($certificateResponse.Data -eq $null)) {
    Write-Host $certificateResponse.ErrorMessage
    throw
}

$fileName = $certificateResponse.Data.Filename
$certificateZip = [System.Convert]::FromBase64String($certificateResponse.Data.CertificateZipEncoded)
$certificateSecret = [System.Text.Encoding]::ASCII.GetString(
                            [System.Convert]::FromBase64String(
                                $certificateResponse.Data.CertificateSecretEncoded))

# Save the zip to the local disk.
# Could add unzipping in memory and install certificates to correct local certificate stores.
Set-Content $fileName -Value $certificateZip -Encoding Byte

Write-Host "Certificate bundle downloaded to $fileName with private certificate password $certificateSecret"

Обмеження ставки

Щоб покращити запити на баланс навантаження, для цього API передбачено обмеження ставки. Ці обмеження також використовуються для веб-інтерфейсу служб життєвого циклу.

  • 1 виклик для кожного середовища за хвилину

Примітка

Запити, які перевищують обмеження ставки, буде відхилено, а відповідь "HTTP 429 забагато запитів" буде повернуто. У заголовку "Повторити після " буде вказано кількість секунд, через яку запит можна повторити.