Hente et miljøs RSAT-sertifikat i en ZIP-fil

Bemerkning

Interessegrupper i fellesskapet har nå flyttet fra Yammer til Microsoft Viva Engage. Hvis du vil bli med i et Viva Engage-fellesskap og delta i de siste diskusjonene, fyller du ut skjemaet Be om tilgang til Finance and Operations Viva Engage Community og velger fellesskapet du vil bli med i.

Viktig!

Fra og med februar 2026 kan ikke nye kunder opprette prosjekter i Microsoft Dynamics Lifecycle Services for Microsoft Dynamics 365 Finance, Microsoft Dynamics 365 Human Resources, Microsoft Dynamics 365 Supply Chain Management og Microsoft Dynamics 365 Project Operations. Nye kunder bør bruke administrasjonssenteret for Power Platform i stedet. Hvis du vil ha mer informasjon, kan du se Prosjektopprettelsesfrys for livssyklustjenester.

Du kan hente Regression Suite Automation Tool (RSAT)-sertifikatpakken for et miljø gjennom Microsoft Dynamics Lifecycle Services via miljø-API-en for livssyklustjenester. Denne API-en returnerer en base 64-kodet zip-fil og et grunnleggende 64-kodet passord for det private sertifikatpassordet.

Du finner hele prosessen for å bruke zip-en på installasjons- og konfigurasjonssiden for Regression Suite Automation Tool .

Tillatelser

API-program

En av følgende tillatelser kreves for å kalle dette API-et. Hvis du vil ha mer informasjon om tillatelser og hvordan du velger dem, kan du se API for databasebevegelse – godkjenning.

Tillatelsestype Tillatelser (fra minst privilegert til mest privilegert)
Delegert (jobb- eller skolekonto) user_impersonation

Livssyklustjenester

I Livssyklustjenester må brukeren som brukes i API OAuth-godkjenningen legges til prosjektet som enten prosjekteier eller miljøadministrator. Brukeren må godta invitasjonen til prosjektet.

HTTP-forespørsel

Bruk følgende GET-endepunkt til å hente zip-filen for et miljøs RSAT-sertifikat.

Hente RSAT-sertifikatet etter miljø

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

Forespørselshoder

Bruk følgende overskriftsverdier i HTTP-forespørselshodet.

Hode Verdi
Autorisasjon Bærer {token} (obligatorisk)
'x-ms-version' '2017-09-15' (obligatorisk)
Innholdstype program/json

Forespørselstekst

Ikke angi en forespørselstekst for denne metoden.

Svar

HTTP

Svaret er alltid et svar på «200 OK», med mindre du ikke er riktig godkjent. Pass på at du bruker IsSuccess-egenskapen til å evaluere handlingens suksess eller fiasko.

Data

Egenskap Description
CertificateZipEncoded En zip som inneholder . PFX og . CER-filer i en base 64-kodet bytematrise.
CertificateSecretEncoded Privat sertifikatets private hemmelighet som en Base 64-kodet streng. Dette endrer alle forespørsler.
CertificateThumbprint Det private sertifikatets avtrykk.
ExpirationDateTimeUTC En dato og et klokkeslett i UTC (vises i fulltekstformat) der sertifikatet ikke er gyldig.
ExpirationISODateTimeUTC En dato og et klokkeslett i UTC (vises i ISO 8606-format) hvoretter sertifikatet ikke er gyldig.
Filnavn Filnavnet på zip-en som returneres.

Eksempelsvar

Vellykket svar for en forespørsel på prosjektnivå

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

Analysere data via PowerShell

Følgende eksempelskript kommuniserer med API-en for livssyklustjenester for å laste ned ZIP-filen for RSAT-sertifikatet til den lokale maskinen. Den viser passordet for det private sertifikatet i konsollvinduet. Et tilgangstoken må angis.

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

Satsgrenser

For bedre belastningsfordelingsforespørsler er det rentebegrensninger på denne API-en. Disse grensene deles også med nettgrensesnittet for livssyklustjenester.

  • 1 samtale for hvert miljø per minutt

Bemerkning

Forespørsler som overskrider rentegrensene, vil bli avvist, og svaret HTTP 429 For mange forespørsler returneres. Overskriften for ny forsøk etter angir antall sekunder forespørselen kan prøves på nytt etter.