Abrufen des RSAT-Zertifikats einer Umgebung in einer ZIP-Datei

Hinweis

Community-Interessensgruppen sind inzwischen von Yammer auf Microsoft Viva Engage umgestiegen. Um an einer Viva Engage-Community teilzunehmen und an den neuesten Diskussionen teilzunehmen, füllen Sie das Formular "Anfordern des Zugriffs auf Finance and Operations Viva Engage Community" aus , und wählen Sie die Community aus, der Sie beitreten möchten.

Wichtig

Ab Februar 2026 können neue Kunden keine Projekte in Microsoft Dynamics Lifecycle Services für Microsoft Dynamics 365 Finance, Microsoft Dynamics 365 Human Resources, Microsoft Dynamics 365 Supply Chain Management und Microsoft Dynamics 365 Project Operations erstellen. Neue Kunden sollten stattdessen das Power Platform Admin Center verwenden. Weitere Informationen finden Sie unter „Lifecycle Services-Projekterstellung einfrieren“.

Sie können das Regression Suite Automation Tool (RSAT)-Zertifikatpaket für eine Umgebung über Microsoft Dynamics Lifecycle Services über die Lifecycle Services Environment-API abrufen. Diese API gibt eine Base64-codierte ZIP-Datei und ein Base64-codiertes Kennwort für das private Zertifikatkennwort zurück.

Der vollständige Prozess für die Verwendung des ZIP-Pakets finden Sie auf der Installations- und Konfigurationsseite des Regression Suite Automation Tools .

Berechtigungen

API-Anwendung

Zum Aufrufen dieser API ist eine der folgenden Berechtigungen erforderlich. Weitere Informationen zu Berechtigungen und deren Auswahl finden Sie unter Datenbankbewegungs-API – Authentifizierung.

Berechtigungstyp Berechtigungen (von den mit den wenigsten bis zu den meisten Rechten)
Delegiert (Geschäfts-, Schul- oder Unikonto) Benutzer-Identitätswechsel

Lifecycle Services

In Lifecycle Services muss der Benutzer, der in der OAuth-API-Authentifizierung verwendet wird, dem Projekt als Projektbesitzer oder Umgebungsadministrator hinzugefügt werden. Der Benutzer muss die Einladung zum Projekt annehmen.

HTTP-Anforderung

Verwenden Sie den folgenden GET-Endpunkt, um die ZIP-Datei für das RSAT-Zertifikat einer Umgebung abzurufen.

Abrufen des RSAT-Zertifikats nach Umgebung

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

Anforderungsheader

Verwenden Sie die folgenden Headerwerte im HTTP-Anforderungsheader.

Kopfzeile Wert
Authorization Bearer {token} (erforderlich)
"x-ms-version" "2017-09-15" (erforderlich)
Content-Type application/json

Anforderungstext

Geben Sie keinen Anforderungstext für diese Methode an.

Antwort

HTTP

Die Antwort ist immer eine "200 OK"-Antwort, es sei denn, Sie sind nicht ordnungsgemäß authentifiziert. Achten Sie darauf, die IsSuccess-Eigenschaft zu verwenden, um den Erfolg oder Fehler der Aktion auszuwerten.

Daten

Eigenschaft Description
CertificateZipEncoded Eine ZIP-Datei mit der . PFX und . CER-Dateien in einem Base64-codierten Bytearray.
CertificateSecretEncoded Der private Geheimschlüssel des privaten Zertifikats als Base64-codierte Zeichenfolge. Dadurch wird jede Anforderung geändert.
CertificateThumbprint Fingerabdruck des privaten Zertifikats.
ExpirationDateTimeUTC Datum und Uhrzeit in UTC (im Volltextformat angezeigt), nach dem das Zertifikat ungültig ist.
ExpirationISODateTimeUTC Datum und Uhrzeit in UTC (im ISO 8606-Format angezeigt), nach dem das Zertifikat ungültig ist.
Dateiname Der Dateiname der zurückgegebenen ZIP-Datei.

Beispielantwort

Erfolgreiche Antwort für eine Anforderung auf Projektebene

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

Analysieren von Daten über PowerShell

Das folgende Beispielskript kommuniziert mit der Lifecycle Services-API, um die ZIP-Datei für das RSAT-Zertifikat auf den lokalen Computer herunterzuladen. Es zeigt das Kennwort des privaten Zertifikats im Konsolenfenster an. Es muss ein Zugriffstoken bereitgestellt werden.

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

Ratenbeschränkungen

Um Anforderungen für den Lastenausgleich zu verbessern, gibt es Ratelimits für diese API. Diese Grenzwerte werden auch mit der Lifecycle Services-Weboberfläche geteilt.

  • 1 Anruf für jede Umgebung pro Minute

Hinweis

Anforderungen, die die Ratenbeschränkungen überschreiten, werden abgelehnt, und eine Antwort "HTTP 429 Zu viele Anforderungen" wird zurückgegeben. Der Retry-After-Header gibt die Anzahl der Sekunden an, nach denen die Anforderung wiederholt werden kann.