Tải chứng chỉ RSAT của môi trường trong tệp zip

Lưu ý

Các nhóm quan tâm cộng đồng hiện đã chuyển từ Yammer sang Microsoft Viva Engage. Để tham gia cộng đồng Viva Engage và tham gia vào các cuộc thảo luận mới nhất, hãy điền vào biểu mẫu Tạo nhiệm vụ truy nhập vào biểu mẫu Tài chính và Vận hành Viva Engage Cộng đồng và chọn cộng đồng bạn muốn tham gia.

Quan trọng

Bắt đầu từ tháng 2 năm 2026, khách hàng mới không thể tạo dự án trong Microsoft Dynamics Lifecycle Services cho Microsoft Dynamics 365 Finance, Microsoft Dynamics 365 Human Resources, Microsoft Dynamics 365 Supply Chain Management và Microsoft Dynamics 365 Project Operations. Khách hàng mới nên sử dụng Trung tâm quản trị Power Platform để thay thế. Để biết thêm thông tin, hãy xem tạo dự án Dịch vụ Vòng đời bị treo.

Bạn có thể tải gói chứng chỉ Công cụ Tự động hóa Bộ Hồi quy (RSAT) cho một môi trường thông qua Dịch vụ Vòng đời Microsoft Dynamics thông qua API Môi trường Dịch vụ Vòng đời. API này trả về tệp zip cơ sở 64 mã hóa và mật khẩu cơ sở 64 mã hóa cho mật khẩu chứng chỉ riêng tư.

Quá trình đầy đủ để sử dụng zip có thể được tìm thấy trên trang cài đặt và cấu hình Regression Suite Automation Tool .

Quyền

Ứng dụng API

Một trong các quyền sau đây là bắt buộc để gọi API này. Để biết thêm thông tin về các quyền và cách chọn quyền, hãy xem API di chuyển cơ sở dữ liệu - Xác thực.

Loại quyền Quyền (từ đặc quyền ít nhất đến đặc quyền nhất)
Được ủy quyền (tài khoản cơ quan hoặc trường học) user_impersonation

Dịch vụ vòng đời

Trong Dịch vụ Vòng đời, người dùng được sử dụng trong xác thực OAuth API phải được thêm vào dự án với tư cách là chủ sở hữu dự án hoặc người quản trị môi trường. Người dùng phải chấp nhận lời mời vào dự án.

Yêu cầu HTTP

Sử dụng điểm cuối GET sau đây để tải tệp zip cho chứng chỉ RSAT của môi trường.

Tải chứng chỉ RSAT theo môi trường

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

Tiêu đề yêu cầu

Sử dụng các giá trị tiêu đề sau đây trong tiêu đề yêu cầu HTTP.

Tiêu đề Giá trị
Ủy quyền Người mang {token} (bắt buộc)
'x-ms-version' '2017-09-15' (bắt buộc)
Loại-Nội dung ứng dụng/json

Nội dung yêu cầu

Không cung cấp nội dung yêu cầu cho phương thức này.

Phản hồi

HTTP

Phản hồi luôn là câu trả lời "200 OK", trừ khi bạn không được xác thực chính xác. Hãy đảm bảo sử dụng thuộc tính IsSuccess để đánh giá sự thành công hay thất bại của hành động.

Dữ liệu

Property Sự miêu tả
CertificateZipEncoded Một zip chứa . PFX và . Các tệp CER trong mảng byte cơ số 64 được mã hóa.
CertificateSecretEncoded Bí mật riêng tư của chứng chỉ riêng tư là một chuỗi mã hóa Cơ sở 64. Thao tác này sẽ thay đổi mọi yêu cầu.
CertificateThumbprint Dấu vân tay của chứng chỉ riêng.
ExpirationDateTimeUTC Ngày và giờ trong UTC (hiển thị ở định dạng văn bản đầy đủ) sau đó chứng chỉ không hợp lệ.
ExpirationISODateTimeUTC Ngày và giờ theo định dạng UTC (hiển thị theo định dạng ISO 8606) sau đó chứng chỉ không hợp lệ.
Tên tệp Tên tệp của zip đang được trả về.

Phản hồi ví dụ

Phản hồi thành công yêu cầu cấp dự án

{
    "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"
}

Phân tích dữ liệu qua PowerShell

Tập lệnh ví dụ sau đây liên lạc với API Dịch vụ Vòng đời để tải tệp zip cho chứng chỉ RSAT xuống máy cục bộ. Nó hiển thị mật khẩu của chứng chỉ riêng tư trong cửa sổ bảng điều khiển. Mã thông báo truy nhập phải được cung cấp.

# 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"

Giới hạn tỷ lệ

Để yêu cầu cân bằng tải tốt hơn, API này có giới hạn tỷ lệ. Các giới hạn này cũng được chia sẻ với giao diện web Dịch vụ Vòng đời.

  • 1 cuộc gọi cho mỗi môi trường mỗi phút

Lưu ý

Các yêu cầu vượt quá giới hạn tốc độ sẽ bị từ chối và phản hồi "HTTP 429 Quá Nhiều Yêu cầu" sẽ được trả về. Tiêu đề thử lại sau sẽ cho biết số giây mà yêu cầu có thể được thử lại sau.