Verificatie in Partnercentrum

Van toepassing op: Partnercentrum | Partnercentrum beheerd door 21Vianet | Partnercentrum voor Microsoft Cloud voor de Amerikaanse overheid

Partnercentrum maakt gebruik van Microsoft Entra ID voor verificatie. Bij interactie met de API, SDK of PowerShell-module van Partner Center moet u op de juiste wijze een Microsoft Entra-toepassing configureren en vervolgens een toegangstoken aanvragen. Toegangstokens die alleen worden verkregen met behulp van de app of app en gebruikersverificatie, kunnen worden gebruikt met het Partnercentrum. Er zijn echter twee belangrijke items die moeten worden overwogen

  • Gebruik meervoudige verificatie bij het openen van de Partnercentrum-API met behulp van app + gebruikersverificatie. Zie Secure Application Model inschakelen voor meer informatie over deze wijziging.

  • Niet alle bewerkingen die de partnercentrum-API alleen verificatie ondersteunt. Er zijn bepaalde scenario's waarin u app + gebruikersverificatie moet gebruiken. Onder de kop Vereisten in elk artikel vindt u documentatie waarin wordt aangegeven of alleen app-verificatie, app en gebruikersverificatie of beide worden ondersteund.

Belangrijk

Azure Active Directory (Azure AD) Graph is vanaf 30 juni 2023 afgeschaft. In de toekomst doen we geen verdere investeringen in Azure AD Graph. Azure AD Graph-API's hebben geen SLA of onderhoudsverplichting buiten beveiligingsgerelateerde oplossingen. Investeringen in nieuwe functies en functionaliteiten worden alleen gedaan in Microsoft Graph.

Azure AD Graph wordt in incrementele stappen buiten gebruik gesteld, zodat u voldoende tijd hebt om uw toepassingen te migreren naar Microsoft Graph-API's. Op een later tijdstip dat we zullen aankondigen, blokkeren we het maken van nieuwe toepassingen met behulp van Azure AD Graph.

Zie Belangrijk: Buitengebruikstelling van Azure AD Graph en Afschaffing van Powershell-module voor meer informatie.

Eerste configuratie

  1. Om te beginnen moet u ervoor zorgen dat u zowel een primair Partnercentrum-account als een account voor integratie-sandbox partnercentrum hebt. Zie Partnercentrum-accounts instellen voor API-toegang voor meer informatie. Noteer de registratie-id van de Microsoft Entra-app en het geheim (clientgeheim is alleen vereist voor app-identificatie) voor zowel uw primaire account als uw sandbox-account voor integratie.

  2. Meld u aan bij Microsoft Entra ID vanuit Azure Portal. In machtigingen voor andere toepassingen stelt u machtigingen in voor Windows Azure Active Directory op Gedelegeerde machtigingen en selecteert u zowel Toegang tot de directory als de aangemelde gebruiker en meldt u zich aan en leest u het gebruikersprofiel.

  3. Voeg de toepassing toe in Azure Portal. Zoek naar 'Microsoft Partner Center', de toepassing Microsoft Partner Center. Stel de gedelegeerde machtigingen in voor toegang tot partnercentrum-API. Als u partnercentrum voor Microsoft Cloud voor de Amerikaanse overheid gebruikt, is deze stap verplicht. Als u het globale exemplaar van Partnercentrum gebruikt, is deze stap optioneel. CSP-partners kunnen de functie App Management in partnercentrum gebruiken om deze stap te omzeilen voor het globale exemplaar van Partnercentrum.

Alleen-app-verificatie

Als u alleen-app-verificatie wilt gebruiken voor toegang tot de REST API van Partnercentrum, .NET API, Java API of PowerShell, kunt u dit doen met behulp van de volgende instructies.

.NET (alleen-app-verificatie)

public static IAggregatePartner GetPartnerCenterTokenUsingAppCredentials()
{
    IPartnerCredentials partnerCredentials =
        PartnerCredentials.Instance.GenerateByApplicationCredentials(
            PartnerApplicationConfiguration.ApplicationId,
            PartnerApplicationConfiguration.ApplicationSecret,
            PartnerApplicationConfiguration.ApplicationDomain);

    // Create operations instance with partnerCredentials.
    return PartnerService.Instance.CreatePartnerOperations(partnerCredentials);
}

Java (alleen-app-verificatie)

De Partner Center Java SDK kan worden gebruikt voor het beheren van Partnercentrum-resources. Het is een opensource-project dat wordt onderhouden door de partnercommunity en niet officieel wordt ondersteund door Microsoft. U kunt hulp krijgen van de community of een probleem openen op GitHub als u een probleem ondervindt.

public IAggregatePartner getAppPartnerOperations()
{
    IPartnerCredentials appCredentials =
        PartnerCredentials.getInstance().generateByApplicationCredentials(
        PartnerApplicationConfiguration.getApplicationId(),
        PartnerApplicationConfiguration.getApplicationSecret(),
        PartnerApplicationConfiguration.getApplicationDomain());

    return PartnerService.getInstance().createPartnerOperations( appCredentials );
}

REST (alleen-app-verificatie)

REST-aanvraag

POST https://login.microsoftonline.com/{tenantId}/oauth2/token HTTP/1.1
Accept: application/json
return-client-request-id: true
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: login.microsoftonline.com
Content-Length: 194
Expect: 100-continue

resource=https%3A%2F%2Fgraph.windows.net&client_id={client-id-here}&client_secret={client-secret-here}&grant_type=client_credentials

REST-antwoord

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Content-Length: 1406

{"token_type":"Bearer","expires_in":"3600","ext_expires_in":"3600","expires_on":"1546469802","not_before":"1546465902","resource":"https://graph.windows.net","access_token":"value-has-been-removed"}

App + gebruikersverificatie

In het verleden is de toekenning van de referenties voor het wachtwoord van de resource-eigenaar gebruikt om een toegangstoken aan te vragen voor gebruik met de Partner Center REST API, .NET API, Java API of PowerShell-module. Deze methode is gebruikt om een toegangstoken aan te vragen bij Microsoft Entra ID met behulp van een client-id en gebruikersreferenties. Deze aanpak werkt echter niet meer omdat Partner Center meervoudige verificatie vereist bij het gebruik van app en gebruikersverificatie. Om te voldoen aan deze vereiste heeft Microsoft een veilig, schaalbaar framework geïntroduceerd voor het verifiëren van CSP-partners (Cloud Solution Provider) en CPV-leveranciers (Control Panel Vendor) met behulp van meervoudige verificatie. Dit framework staat bekend als het Secure Application Model en bestaat uit een toestemmingsproces en een aanvraag voor een toegangstoken met behulp van een vernieuwingstoken.

Het toestemmingsproces van de partner is een interactief proces waarbij de partner wordt geverifieerd met behulp van meervoudige verificatie, toestemming voor de toepassing en een vernieuwingstoken wordt opgeslagen in een beveiligde opslagplaats, zoals Azure Key Vault. We raden u aan een speciaal account voor integratiedoeleinden te gebruiken voor dit proces.

Belangrijk

De juiste oplossing voor meervoudige verificatie moet zijn ingeschakeld voor het serviceaccount dat wordt gebruikt in het toestemmingsproces van de partner. Als dit niet het resultaat is, voldoet het resulterende vernieuwingstoken niet aan de beveiligingsvereisten.

Voorbeelden voor App + Gebruikersverificatie

Het toestemmingsproces van de partner kan op veel manieren worden uitgevoerd. Om partners te helpen begrijpen hoe elke vereiste bewerking moet worden uitgevoerd, hebben we de volgende voorbeelden ontwikkeld. Wanneer u de juiste oplossing in uw omgeving implementeert, is het belangrijk dat u een oplossing ontwikkelt die voldoet aan uw coderingsstandaarden en beveiligingsbeleid.

.NET (app+gebruikersverificatie)

Het voorbeeldproject voor partnertoestemming laat zien hoe u een website gebruikt die is ontwikkeld met behulp van ASP.NET om toestemming vast te leggen, een vernieuwingstoken aan te vragen en het veilig op te slaan in Azure Key Vault. Voer de volgende stappen uit om de vereiste vereisten voor dit voorbeeld te maken.

  1. Maak een exemplaar van Azure Key Vault met behulp van Azure Portal of de volgende PowerShell-opdrachten. Voordat u de opdracht uitvoert, moet u de parameterwaarden dienovereenkomstig wijzigen. De kluisnaam moet uniek zijn.

    Login-AzureRmAccount
    
    # Create a new resource group
    New-AzureRmResourceGroup -Name ContosoResourceGroup -Location EastUS
    
    New-AzureRmKeyVault -Name 'Contoso-Vault' -ResourceGroupName 'ContosoResourceGroup' -Location 'East US'
    

    Zie quickstart: Een geheim instellen en ophalen uit Azure Key Vault met behulp van Azure Portal of quickstart: Een geheim instellen en ophalen uit Azure Key Vault met behulp van PowerShell voor meer informatie over het maken van een Azure Key Vault. Stel vervolgens een geheim in en haal het op.

  2. Maak een Microsoft Entra-toepassing en een sleutel met behulp van Azure Portal of de volgende opdrachten.

    Connect-MgGraph -Scopes "Application.ReadWrite.OwnedBy"
    
    $Context = Get-MgContext
    
    $app = New-MgApplication -DisplayName 'My Vault Access App' -Web @{ RedirectUris = 'https://$($Context.TenantId)/$((New-Guid).ToString())' }
    $password = Add-MgApplicationPassword -ApplicationId $app.AppId
    
    Write-Host "ApplicationId       = $($app.AppId)"
    Write-Host "ApplicationSecret   = $($password.SecretText)"
    

    Noteer de toepassings-id en geheime waarden, omdat deze worden gebruikt in de onderstaande stappen.

  3. Verdeel de zojuist te maken Microsoft Entra-toepassing de machtigingen voor leesgeheimen met behulp van Azure Portal of de volgende opdrachten.

    # Connect to Microsoft Graph
    Connect-MgGraph -Scopes "User.Read"
    
    # Get the application
    $app = Get-MgApplication -Filter "appId eq 'ENTER-APP-ID-HERE'"
    
    # Set the Key Vault access policy
    Set-AzKeyVaultAccessPolicy -VaultName ContosoVault -ObjectId $app.Id -PermissionsToSecrets get
    
  4. Maak een Microsoft Entra-toepassing die is geconfigureerd voor partnercentrum. Voer de volgende acties uit om deze stap te voltooien.

    • Blader naar de functie App-beheer van Partnercentrum
    • Selecteer Nieuwe web-app toevoegen om een nieuwe Microsoft Entra-toepassing te maken.

    Zorg ervoor dat u de waarden voor de app-id, de account-id* en de sleutel documenteren, omdat deze worden gebruikt in de onderstaande stappen.

  5. Kloon de opslagplaats Partner-Center-DotNet-Samples met Visual Studio of de volgende opdracht.

    git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
    
  6. Open het PartnerConsent-project in de Partner-Center-DotNet-Samples\secure-app-model\keyvault map.

  7. Vul de toepassingsinstellingen in die zijn gevonden in de web.config

    <!-- AppID that represents CSP application -->
    <add key="ida:CSPApplicationId" value="" />
    <!--
        Please use certificate as your client secret and deploy the certificate to your environment.
        The following application secret is for sample application only. please do not use secret directly from the config file.
    -->
    <add key="ida:CSPApplicationSecret" value="" />
    
    <!--
        Endpoint address for the instance of Azure KeyVault. This is
        the DNS Name for the instance of Key Vault that you provisioned.
     -->
    <add key="KeyVaultEndpoint" value="" />
    
    <!-- App ID that is given access for KeyVault to store refresh tokens -->
    <add key="ida:KeyVaultClientId" value="" />
    
    <!--
        Please use certificate as your client secret and deploy the certificate
        to your environment. The following application secret is for sample
        application only. please do not use secret directly from the config file.
    -->
    <add key="ida:KeyVaultClientSecret" value="" />
    

    Belangrijk

    Gevoelige informatie, zoals toepassingsgeheimen, mogen niet worden opgeslagen in configuratiebestanden. Dit is hier gebeurd omdat dit een voorbeeldtoepassing is. Met uw productietoepassing raden we u ten zeerste aan om verificatie op basis van certificaten te gebruiken. Zie Certificaatreferenties voor toepassingsverificatie voor meer informatie.

  8. Wanneer u dit voorbeeldproject uitvoert, wordt u gevraagd om verificatie. Nadat de verificatie is geslaagd, wordt een toegangstoken aangevraagd bij Microsoft Entra-id. De informatie die wordt geretourneerd uit de Microsoft Entra-id bevat een vernieuwingstoken dat is opgeslagen in het geconfigureerde exemplaar van Azure Key Vault.

Java (app+gebruikersverificatie)

Het voorbeeldproject voor partnertoestemming laat zien hoe u een website gebruikt die is ontwikkeld met behulp van JSP voor het vastleggen van toestemming, het aanvragen van een vernieuwingstoken en het beveiligde archief in Azure Key Vault. Voer het volgende uit om de vereiste vereisten voor dit voorbeeld te maken.

  1. Maak een exemplaar van Azure Key Vault met behulp van Azure Portal of de volgende PowerShell-opdrachten. Voordat u de opdracht uitvoert, moet u de parameterwaarden dienovereenkomstig wijzigen. De kluisnaam moet uniek zijn.

    Login-AzureRmAccount
    
    # Create a new resource group
    New-AzureRmResourceGroup -Name ContosoResourceGroup -Location EastUS
    
    New-AzureRmKeyVault -Name 'Contoso-Vault' -ResourceGroupName 'ContosoResourceGroup' -Location 'East US'
    

    Zie quickstart: Een geheim instellen en ophalen uit Azure Key Vault met behulp van Azure Portal of quickstart: Een geheim instellen en ophalen uit Azure Key Vault met behulp van PowerShell voor meer informatie over het maken van een Azure Key Vault.

  2. Maak een Microsoft Entra-toepassing en een sleutel met behulp van Azure Portal of de volgende opdrachten.

    Connect-MgGraph -Scopes "Application.ReadWrite.OwnedBy"
    
    $Context = Get-MgContext
    
    $app = New-MgApplication -DisplayName 'My Vault Access App' -IdentifierUri 'https://$($Context.TenantDomain)/$((New-Guid).ToString())'
    $password = Add-MgApplicationPassword -ApplicationId $app.AppId
    
    Write-Host "ApplicationId       = $($app.AppId)"
    Write-Host "ApplicationSecret   = $($password.SecretText)"
    

    Zorg ervoor dat u de toepassings-id en geheime waarden documenteren, omdat deze worden gebruikt in de onderstaande stappen.

  3. Verdeel de zojuist gemaakte Microsoft Entra-toepassing de machtigingen voor leesgeheimen met behulp van Azure Portal of de volgende opdrachten.

    Connect-MgGraph -Scopes "User.Read"
    $app = Get-MgApplication -Filter "appId eq 'ENTER-APP-ID-HERE'"
    
    Set-AzKeyVaultAccessPolicy -VaultName ContosoVault -ObjectId $app.Id -PermissionsToSecrets get
    
  4. Maak een Microsoft Entra-toepassing die is geconfigureerd voor partnercentrum. Voer het volgende uit om deze stap te voltooien.

    • Blader naar de functie App-beheer van Partnercentrum
    • Selecteer Nieuwe web-app toevoegen om een nieuwe Microsoft Entra-toepassing te maken.

    Zorg ervoor dat u de waarden voor de app-id, de account-id* en de sleutel documenteren, omdat deze worden gebruikt in de onderstaande stappen.

  5. Kloon de opslagplaats Partner-Center-Java-Samples met behulp van de volgende opdracht

    git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
    
  6. Open het PartnerConsent-project in de Partner-Center-Java-Samples\secure-app-model\keyvault map.

  7. Vul de toepassingsinstellingen in die in het web.xml-bestand zijn gevonden

    <filter>
        <filter-name>AuthenticationFilter</filter-name>
        <filter-class>com.microsoft.store.samples.partnerconsent.security.AuthenticationFilter</filter-class>
        <init-param>
            <param-name>client_id</param-name>
            <param-value></param-value>
        </init-param>
        <init-param>
            <param-name>client_secret</param-name>
            <param-value></param-value>
        </init-param>
        <init-param>
            <param-name>keyvault_base_url</param-name>
            <param-value></param-value>
        </init-param>
        <init-param>
            <param-name>keyvault_client_id</param-name>
            <param-value></param-value>
        </init-param>
        <init-param>
            <param-name>keyvault_client_secret</param-name>
            <param-value></param-value>
        </init-param>
        <init-param>
            <param-name>keyvault_certifcate_path</param-name>
            <param-value></param-value>
        </init-param>
    </filter>
    

    Belangrijk

    Gevoelige informatie, zoals toepassingsgeheimen, mogen niet worden opgeslagen in configuratiebestanden. Dit is hier gebeurd omdat dit een voorbeeldtoepassing is. Met uw productietoepassing raden we u ten zeerste aan verificatie op basis van certificaten te gebruiken. Zie Key Vault-certificaatverificatie voor meer informatie.

  8. Wanneer u dit voorbeeldproject uitvoert, wordt u gevraagd om verificatie. Nadat de verificatie is geslaagd, wordt een toegangstoken aangevraagd bij Microsoft Entra-id. De informatie die wordt geretourneerd uit de Microsoft Entra-id bevat een vernieuwingstoken dat is opgeslagen in het geconfigureerde exemplaar van Azure Key Vault.

Cloud Solution Provider-verificatie

Cloud Solution Provider-partners kunnen het vernieuwingstoken gebruiken dat is verkregen via het toestemmingsproces van de partner.

Voorbeelden voor Cloud Solution Provider-verificatie

Om partners te helpen begrijpen hoe elke vereiste bewerking moet worden uitgevoerd, hebben we de volgende voorbeelden ontwikkeld. Wanneer u de juiste oplossing in uw omgeving implementeert, is het belangrijk dat u een oplossing ontwikkelt die voldoet aan uw coderingsstandaarden en beveiligingsbeleid.

.NET (CSP-verificatie)

  1. Als u dit nog niet hebt gedaan, voert u het toestemmingsproces van de partner uit.

  2. Kloon de opslagplaats Partner-Center-DotNet-Samples met Visual Studio of de volgende opdracht

    git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
    
  3. Open het CSPApplication project in de Partner-Center-DotNet-Samples\secure-app-model\keyvault map.

  4. Werk de toepassingsinstellingen bij die in het App.config-bestand zijn gevonden.

    <!-- AppID that represents CSP application -->
    <add key="ida:CSPApplicationId" value="" />
    <!--
        Please use certificate as your client secret and deploy the certificate to your environment.
        The following application secret is for sample application only. please do not use secret directly from the config file.
    -->
    <add key="ida:CSPApplicationSecret" value="" />
    
    <!-- Endpoint address for the instance of Azure KeyVault -->
    <add key="KeyVaultEndpoint" value="" />
    
    <!-- AppID that is given access for keyvault to store the refresh tokens -->
    <add key="ida:KeyVaultClientId" value="" />
    
    <!--
        Please use certificate as your client secret and deploy the certificate to your environment.
        The following application secret is for sample application only. please do not use secret directly from the config file.
    -->
    <add key="ida:KeyVaultClientSecret" value="" />
    
  5. Stel de juiste waarden in voor de PartnerId - en CustomerId-variabelen in het Program.cs-bestand .

    // The following properties indicate which partner and customer context the calls are going to be made.
    string PartnerId = "<Partner tenant id>";
    string CustomerId = "<Customer tenant id>";
    
  6. Wanneer u dit voorbeeldproject uitvoert, wordt het vernieuwingstoken opgehaald dat is verkregen tijdens het toestemmingsproces van de partner. Vervolgens wordt een toegangstoken aangevraagd om namens de partner te communiceren met de Partner Center SDK. Ten slotte wordt een toegangstoken aangevraagd om namens de opgegeven klant met Microsoft Graph te communiceren.

Java (CSP-verificatie)

  1. Als u dit nog niet hebt gedaan, voert u het toestemmingsproces van de partner uit.

  2. Kloon de opslagplaats Partner-Center-Java-Samples met Visual Studio of de volgende opdracht

    git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
    
  3. Open het cspsample project in de Partner-Center-Java-Samples\secure-app-model\keyvault map.

  4. Werk de toepassingsinstellingen bij die in het bestand application.properties zijn gevonden.

    azuread.authority=https://login.microsoftonline.com
    keyvault.baseurl=
    keyvault.clientId=
    keyvault.clientSecret=
    partnercenter.accountId=
    partnercenter.clientId=
    partnercenter.clientSecret=
    
  5. Wanneer u dit voorbeeldproject uitvoert, wordt het vernieuwingstoken opgehaald dat is verkregen tijdens het toestemmingsproces van de partner. Vervolgens wordt een toegangstoken aangevraagd om namens de partner te communiceren met de Partner Center SDK.

  6. Optioneel: verwijder opmerkingen bij de functie RunAzureTask en RunGraphTask als u wilt zien hoe u namens de klant kunt communiceren met Azure Resource Manager en Microsoft Graph.

Configuratiescherm providerverificatie

Leveranciers van het Configuratiescherm moeten elke partner hebben die ze ondersteunen, het toestemmingsproces van de partner uitvoeren. Zodra dit is voltooid, wordt het vernieuwingstoken dat via dat proces is verkregen, gebruikt om toegang te krijgen tot de REST API van Partnercentrum en .NET API.

Notitie

Leveranciers van configuratiescherm moeten minimaal de rol cloudtoepassing Beheer istrator hebben in de tenant van de klant.

Voorbeelden voor verificatie van cloudpaneelproviders

Om leveranciers van het configuratiescherm te helpen begrijpen hoe ze elke vereiste bewerking kunnen uitvoeren, hebben we de volgende voorbeelden ontwikkeld. Wanneer u de juiste oplossing in uw omgeving implementeert, is het belangrijk dat u een oplossing ontwikkelt die voldoet aan uw coderingsstandaarden en beveiligingsbeleid.

.NET (CPV-verificatie)

  1. Ontwikkel en implementeer een proces voor Cloud Solution Provider-partners om de juiste toestemming te geven. Zie toestemming van de partner voor meer informatie.

    Belangrijk

    Gebruikersreferenties van een Cloud Solution Provider-partner mogen niet worden opgeslagen. Het vernieuwingstoken dat is verkregen via het toestemmingsproces van de partner, moet worden opgeslagen en gebruikt om toegangstokens aan te vragen voor interactie met elke Microsoft-API.

  2. Kloon de opslagplaats Partner-Center-DotNet-Samples met Visual Studio of de volgende opdracht

    git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
    
  3. Open het CPVApplication project in de Partner-Center-DotNet-Samples\secure-app-model\keyvault map.

  4. Werk de toepassingsinstellingen bij die in het App.config-bestand zijn gevonden.

    <!-- AppID that represents Control panel vendor application -->
    <add key="ida:CPVApplicationId" value="" />
    
    <!--
        Please use certificate as your client secret and deploy the certificate to your environment.
        The following application secret is for sample application only. please do not use secret directly from the config file.
    -->
    <add key="ida:CPVApplicationSecret" value="" />
    
    <!-- Endpoint address for the instance of Azure KeyVault -->
    <add key="KeyVaultEndpoint" value="" />
    
    <!-- AppID that is given access for keyvault to store the refresh tokens -->
    <add key="ida:KeyVaultClientId" value="" />
    
    <!--
        Please use certificate as your client secret and deploy the certificate to your environment.
        The following application secret is for sample application only. please do not use secret directly from the config file.
    -->
    <add key="ida:KeyVaultClientSecret" value="" />
    
  5. Stel de juiste waarden in voor de PartnerId - en CustomerId-variabelen in het Program.cs-bestand .

    // The following properties indicate which partner and customer context the calls are going to be made.
    string PartnerId = "<Partner tenant id>";
    string CustomerId = "<Customer tenant id>";
    
  6. Wanneer u dit voorbeeldproject uitvoert, wordt het vernieuwingstoken voor de opgegeven partner opgehaald. Vervolgens wordt een toegangstoken aangevraagd voor toegang tot partnercentrum en Microsoft Graph namens de partner. De volgende taak die wordt uitgevoerd, is het verwijderen en maken van machtigingen in de tenant van de klant. Omdat er geen relatie is tussen de leverancier van het configuratiescherm en de klant, moeten deze machtigingen worden toegevoegd met behulp van de Partnercentrum-API. In het volgende voorbeeld ziet u hoe u dit kunt doen.

    JObject contents = new JObject
    {
        // Provide your application display name
        ["displayName"] = "CPV Marketplace",
    
        // Provide your application id
        ["applicationId"] = CPVApplicationId,
    
        // Provide your application grants
        ["applicationGrants"] = new JArray(
            JObject.Parse("{\"enterpriseApplicationId\": \"00000003-0000-0000-c000-000000000000\", \"scope\":\"Domain.ReadWrite.All,User.ReadWrite.All,Directory.Read.All\"}"), // for Microsoft Graph access,  Directory.Read.All
            JObject.Parse("{\"enterpriseApplicationId\": \"797f4846-ba00-4fd7-ba43-dac1f8f63013\", \"scope\":\"user_impersonation\"}")) // for Azure Resource Manager access
    };
    
    /**
     * The following steps have to be performed once per customer tenant if your application is
     * a control panel vendor application and requires customer tenant Microsoft Graph access.
     **/
    
    // delete the previous grant into customer tenant
    JObject consentDeletion = await ApiCalls.DeleteAsync(
        tokenPartnerResult.Item1,
        string.Format("https://api.partnercenter.microsoft.com/v1/customers/{0}/applicationconsents/{1}", CustomerId, CPVApplicationId));
    
    // create new grants for the application given the setting in application grants payload.
    JObject consentCreation = await ApiCalls.PostAsync(
        tokenPartnerResult.Item1,
        string.Format("https://api.partnercenter.microsoft.com/v1/customers/{0}/applicationconsents", CustomerId),
        contents.ToString());
    

Nadat deze machtigingen zijn ingesteld, voert het voorbeeld bewerkingen uit met Behulp van Microsoft Graph namens de klant.

Notitie

Zie het overzicht van Microsoft Graph voor meer informatie over Microsoft Graph.

Java (CPV-verificatie)

  1. Ontwikkel en implementeer een proces voor Cloud Solution Provider-partners om de juiste toestemming te geven. Zie de toestemming van de partner voor meer informatie en een voorbeeld.

    Belangrijk

    Gebruikersreferenties van een Cloud Solution Provider-partner mogen niet worden opgeslagen. Het vernieuwingstoken dat is verkregen via het toestemmingsproces van de partner, moet worden opgeslagen en gebruikt om toegangstokens aan te vragen voor interactie met elke Microsoft-API.

  2. Kloon de opslagplaats Partner-Center-Java-Samples met behulp van de volgende opdracht

    git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
    
  3. Open het cpvsample project in de Partner-Center-Java-Samples\secure-app-model\keyvault map.

  4. Werk de toepassingsinstellingen bij die in het bestand application.properties zijn gevonden.

    azuread.authority=https://login.microsoftonline.com
    keyvault.baseurl=
    keyvault.clientId=
    keyvault.clientSecret=
    partnercenter.accountId=
    partnercenter.clientId=
    partnercenter.clientSecret=
    partnercenter.displayName=
    

    De waarde voor de partnercenter.displayName toepassing moet de weergavenaam van uw Marketplace-toepassing zijn.

  5. Stel de juiste waarden in voor de partnerId - en customerId-variabelen in het Program.java-bestand .

    partnerId = "SPECIFY-THE-PARTNER-TENANT-ID-HERE";
    customerId = "SPECIFY-THE-CUSTOMER-TENANT-ID-HERE";
    
  6. Wanneer u dit voorbeeldproject uitvoert, wordt het vernieuwingstoken voor de opgegeven partner opgehaald. Vervolgens wordt een toegangstoken aangevraagd om namens de partner toegang te krijgen tot het Partnercentrum. De volgende taak die wordt uitgevoerd, is het verwijderen en maken van machtigingen in de tenant van de klant. Omdat er geen relatie is tussen de leverancier van het configuratiescherm en de klant, moeten deze machtigingen worden toegevoegd met behulp van de Partnercentrum-API. In het volgende voorbeeld ziet u hoe u de machtigingen kunt verlenen.

    ApplicationGrant azureAppGrant = new ApplicationGrant();
    
    azureAppGrant.setEnterpriseApplication("797f4846-ba00-4fd7-ba43-dac1f8f63013");
    azureAppGrant.setScope("user_impersonation");
    
    ApplicationGrant graphAppGrant = new ApplicationGrant();
    
    graphAppGrant.setEnterpriseApplication("00000002-0000-0000-c000-000000000000");
    graphAppGrant.setScope("Domain.ReadWrite.All,User.ReadWrite.All,Directory.Read.All");
    
    ApplicationConsent consent = new ApplicationConsent();
    
    consent.setApplicationGrants(Arrays.asList(azureAppGrant, graphAppGrant));
    consent.setApplicationId(properties.getProperty(PropertyName.PARTNER_CENTER_CLIENT_ID));
    consent.setDisplayName(properties.getProperty(PropertyName.PARTNER_CENTER_DISPLAY_NAME));
    
    // Deletes the existing grant into the customer it is present.
    partnerOperations.getServiceClient().delete(
        partnerOperations,
        new TypeReference<ApplicationConsent>(){},
        MessageFormat.format(
            "customers/{0}/applicationconsents/{1}",
            customerId,
            properties.getProperty(PropertyName.PARTNER_CENTER_CLIENT_ID)));
    
    // Consent to the defined applications and the respective scopes.
    partnerOperations.getServiceClient().post(
        partnerOperations,
        new TypeReference<ApplicationConsent>(){},
        MessageFormat.format(
            "customers/{0}/applicationconsents",
            customerId),
        consent);
    

Verwijder opmerkingen bij de functie RunAzureTask en RunGraphTask als u wilt zien hoe u namens de klant kunt communiceren met Azure Resource Manager en Microsoft Graph.