Autenticazione del Centro per i partner

Si applica a: Centro per i partner | Centro per i partner gestito da 21Vianet | Centro per i partner per Microsoft Cloud per il governo degli Stati Uniti

Il Centro per i partner usa Microsoft Entra ID per l'autenticazione. Per l'interazione con l'API, l'SDK o il modulo PowerShell del Centro per i partner, è necessario configurare correttamente un'applicazione Microsoft Entra e quindi richiedere un token di accesso. I token di accesso ottenuti usando l'autenticazione solo app o app + utente possono essere usati con il Centro per i partner. Tuttavia, esistono due elementi importanti che devono essere presi in considerazione:

  • Usare l'autenticazione a più fattori quando si accede all'API del Centro per i partner usando l'app e l'autenticazione utente. Per altre informazioni riguardo a questa modifica, vedi Abilitare il modello di applicazione sicura.

  • Non tutte le operazioni dell'API del Centro per i partner supportano l'autenticazione solo app. Esistono determinati scenari in cui ti verrà richiesto di usare l'autenticazione app + utente. Nell'intestazione Prerequisiti di ogni articolo è disponibile la documentazione che indica se sono supportati solo l'autenticazione dell'app, l'app e l'autenticazione utente o entrambi.

Importante

Azure Active Directory (Azure AD) Graph è deprecato a partire dal 30 giugno 2023. In futuro non verranno effettuati ulteriori investimenti in Azure AD Graph. Le API Graph di Azure AD non hanno alcun contratto di servizio o impegno di manutenzione oltre alle correzioni correlate alla sicurezza. Gli investimenti in nuove funzionalità e funzionalità verranno effettuati solo in Microsoft Graph.

Azure AD Graph verrà ritirato nei passaggi incrementali in modo da avere tempo sufficiente per eseguire la migrazione delle applicazioni alle API Di Microsoft Graph. A una data successiva che verrà annunciata, si bloccherà la creazione di nuove applicazioni usando Azure AD Graph.

Per altre informazioni, vedere Importante: Ritiro di Azure AD Graph e Deprecazione del modulo PowerShell.

Configurazione iniziale

  1. Per iniziare, devi verificare di avere sia un account principale del Centro per i partner sia un account sandbox di integrazione del Centro per i partner. Per altre informazioni, vedi Configurare gli account del Centro per i partner per l'accesso all'API. Prendere nota dell'ID registrazione dell'app Microsoft Entra e del segreto (il segreto client è necessario per l'identificazione solo app) sia per l'account primario che per l'account sandbox di integrazione.

  2. Accedere all'ID Microsoft Entra dal portale di Azure. In Autorizzazioni per altre applicazioni imposta le autorizzazioni per Windows Azure Active Directory su Autorizzazioni delegate e seleziona Accedi alla directory come l'utente connesso e Accedi e leggi il profilo di un altro utente.

  3. Nel portale di Azure scegli Aggiungi applicazione. Cercare "Centro per i partner Microsoft", ovvero l'applicazione Del Centro per i partner Microsoft. Imposta Autorizzazioni delegate su Accesso API Centro per i partner. Se si usa il Centro per i partner per Microsoft Cloud for US Government, questo passaggio è obbligatorio. Se si usa l'istanza globale del Centro per i partner, questo passaggio è facoltativo. I partner CSP possono usare la funzionalità Gestione app nel Centro per i partner per ignorare questo passaggio per l'istanza globale del Centro per i partner.

Autenticazione solo app

Se si vuole usare l'autenticazione solo app per accedere all'API REST del Centro per i partner, all'API .NET, all'API Java o al modulo PowerShell, è possibile farlo seguendo le istruzioni seguenti.

.NET (autenticazione solo app)

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 (autenticazione solo app)

L'SDK Java del Centro per i partner può essere usato per gestire le risorse del Centro per i partner. Si tratta di un progetto open source gestito dalla community partner e non ufficialmente supportato da Microsoft. In caso di problemi, puoi richiedere assistenza alla community o aprire un problema in GitHub.

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

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

REST (autenticazione solo app)

Richiesta REST

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

Risposta REST

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

Autenticazione app + utente

In passato, la concessione delle credenziali della password del proprietario della risorsa è stata usata per richiedere un token di accesso da usare con l'API REST del Centro per i partner, l'API .NET, l'API Java o il modulo PowerShell. Questo metodo è stato usato per richiedere un token di accesso da Microsoft Entra ID usando un identificatore client e le credenziali utente. Tuttavia, questo approccio non funzionerà più perché il Centro per i partner richiede l'autenticazione a più fattori, quando si usa l'autenticazione dell'app e dell'utente. Per rispettare questo requisito, Microsoft ha introdotto un framework sicuro e scalabile per l'autenticazione dei partner Cloud Solution Provider (CSP) e dei fornitori di pannelli di controllo (CPV) tramite l'autenticazione a più fattori. Questo framework è noto come modello di applicazione sicura ed è costituito da un processo di consenso e da una richiesta di un token di accesso usando un token di aggiornamento.

Il processo di consenso del partner è un processo interattivo in cui il partner esegue l'autenticazione a più fattori, acconsente all'applicazione e un token di aggiornamento viene archiviato in un repository sicuro, ad esempio Azure Key Vault. Per questo processo consigliamo di usare un account dedicato a scopi di integrazione.

Importante

La soluzione di autenticazione a più fattori appropriata deve essere abilitata per l'account del servizio usato nel processo di consenso del partner. In caso contrario, il token di aggiornamento risultante non sarà conforme ai requisiti di sicurezza.

Esempi di autenticazione app + utente

Il processo di consenso del partner può essere eseguito in molti modi. Per aiutare i partner a comprendere come eseguire ogni operazione necessaria, sono stati sviluppati gli esempi seguenti. Quando si implementa la soluzione appropriata nell'ambiente, è importante sviluppare una soluzione che si lamenta con gli standard di codifica e i criteri di sicurezza.

.NET (autenticazione app + utente)

Il progetto di esempio relativo al consenso del partner illustra come utilizzare un sito Web sviluppato con ASP.NET per acquisire il consenso, richiedere un token di aggiornamento e archiviarlo in modo sicuro in Azure Key Vault. Per creare i prerequisiti necessari per questo esempio, esegui la procedura seguente.

  1. Crea un'istanza di Azure Key Vault usando il portale di Azure o i comandi PowerShell seguenti. Prima di eseguire il comando, modifica opportunamente i valori dei parametri. Il nome dell'insieme di credenziali deve essere univoco.

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

    Per altre informazioni sulla creazione di un insieme di credenziali delle chiavi di Azure, vedere Avvio rapido: Impostare e recuperare un segreto da Azure Key Vault usando il portale di Azure o Avvio rapido: Impostare e recuperare un segreto da Azure Key Vault usando PowerShell. Quindi imposta e recupera un segreto.

  2. Creare un'applicazione Microsoft Entra e una chiave usando il portale di Azure o i comandi seguenti.

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

    Prendi nota dei valori dell'identificatore dell'applicazione e del segreto perché verranno usati nei passaggi seguenti.

  3. Concedere all'applicazione Microsoft Entra le autorizzazioni di lettura dei segreti usando il portale di Azure o i comandi seguenti.

    # 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. Creare un'applicazione Microsoft Entra configurata per il Centro per i partner. Per completare questo passaggio, esegui le operazioni seguenti.

    • Passare alla funzionalità Gestione app del Centro per i partner
    • Selezionare Aggiungi nuova app Web per creare una nuova applicazione Microsoft Entra.

    Assicurarsi di documentare i valori ID app, ID account*e Chiave perché verranno usati nei passaggi seguenti.

  5. Clona il repository Partner-Center-DotNet-Samples con Visual Studio o usando il comando seguente.

    git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
    
  6. Apri il progetto PartnerConsent presente nella directory Partner-Center-DotNet-Samples\secure-app-model\keyvault.

  7. Popola le impostazioni dell'applicazione presenti in 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="" />
    

    Importante

    Le informazioni riservate, ad esempio i segreti delle applicazioni, non devono essere archiviate nei file di configurazione. Qui è stato fatto perché si tratta di un'applicazione di esempio. Con l'applicazione di produzione consigliamo di usare l'autenticazione basata su certificati. Per altre informazioni, vedi Credenziali del certificato di autenticazione dell'applicazione.

  8. Quando si esegue questo progetto di esempio, viene richiesta l'autenticazione. Dopo l'autenticazione, viene richiesto un token di accesso da Microsoft Entra ID. Le informazioni restituite dall'ID Microsoft Entra includono un token di aggiornamento archiviato nell'istanza configurata di Azure Key Vault.

Java (autenticazione app + utente)

Il progetto di esempio relativo al consenso del partner illustra come utilizzare un sito Web sviluppato con JSP per acquisire il consenso, richiedere un token di aggiornamento e archiviarlo in modo sicuro in Azure Key Vault. Per creare i prerequisiti necessari per questo esempio, esegui la procedura seguente.

  1. Crea un'istanza di Azure Key Vault usando il portale di Azure o i comandi PowerShell seguenti. Prima di eseguire il comando, modifica opportunamente i valori dei parametri. Il nome dell'insieme di credenziali deve essere univoco.

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

    Per altre informazioni sulla creazione di un insieme di credenziali delle chiavi di Azure, vedere Avvio rapido: Impostare e recuperare un segreto da Azure Key Vault usando il portale di Azure o Avvio rapido: Impostare e recuperare un segreto da Azure Key Vault usando PowerShell.

  2. Creare un'applicazione Microsoft Entra e una chiave usando il portale di Azure o i comandi seguenti.

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

    Documenta i valori dell'identificatore dell'applicazione e del segreto perché verranno usati nei passaggi seguenti.

  3. Concedere all'applicazione Microsoft Entra appena creata le autorizzazioni di lettura dei segreti usando il portale di Azure o i comandi seguenti.

    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. Creare un'applicazione Microsoft Entra configurata per il Centro per i partner. Per completare questo passaggio, esegui queste operazioni.

    • Passare alla funzionalità Gestione app del Centro per i partner
    • Selezionare Aggiungi nuova app Web per creare una nuova applicazione Microsoft Entra.

    Assicurarsi di documentare i valori ID app, ID account*e Chiave perché verranno usati nei passaggi seguenti.

  5. Clona il repository Partner-Center-Java-Samples usando il comando seguente.

    git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
    
  6. Apri il progetto PartnerConsent presente nella directory Partner-Center-Java-Samples\secure-app-model\keyvault.

  7. Popola le impostazioni dell'applicazione presenti nel file web.xml.

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

    Importante

    Le informazioni riservate, ad esempio i segreti delle applicazioni, non devono essere archiviate nei file di configurazione. Qui è stato fatto perché si tratta di un'applicazione di esempio. Con l'applicazione di produzione consigliamo di usare l'autenticazione basata su certificati. Per altre informazioni, vedi Autenticazione basata su certificati Key Vault.

  8. Quando si esegue questo progetto di esempio, viene richiesta l'autenticazione. Dopo l'autenticazione, viene richiesto un token di accesso da Microsoft Entra ID. Le informazioni restituite dall'ID Microsoft Entra includono un token di aggiornamento archiviato nell'istanza configurata di Azure Key Vault.

Autenticazione dei partner Cloud Solution Provider

I partner Cloud Solution Provider possono usare il token di aggiornamento ottenuto tramite il processo di consenso del partner.

Esempi di autenticazione dei partner Cloud Solution Provider

Per aiutare i partner a comprendere come eseguire ogni operazione necessaria, sono stati sviluppati gli esempi seguenti. Quando si implementa la soluzione appropriata nell'ambiente, è importante sviluppare una soluzione che si lamenta con gli standard di codifica e i criteri di sicurezza.

.NET (autenticazione CSP)

  1. Se non è già stato fatto, eseguire il processo di consenso del partner.

  2. Clona il repository Partner-Center-DotNet-Samples con Visual Studio o usando il comando seguente.

    git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
    
  3. Apri il progetto CSPApplication presente nella directory Partner-Center-DotNet-Samples\secure-app-model\keyvault.

  4. Aggiorna le impostazioni dell'applicazione presenti nel file App.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 -->
    <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. Imposta i valori appropriati delle variabili PartnerId e CustomerId presenti nel file Program.cs.

    // 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. Quando esegui questo progetto di esempio, viene restituito il token di aggiornamento ottenuto durante il processo di consenso del partner. Il progetto richiede quindi un token di accesso per interagire con SDK per Centro per i partner per conto del partner. Infine, richiede un token di accesso per interagire con Microsoft Graph per conto del cliente specificato.

Java (autenticazione CSP)

  1. Se non è già stato fatto, eseguire il processo di consenso del partner.

  2. Clona il repository Partner-Center-Java-Samples con Visual Studio o usando il comando seguente.

    git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
    
  3. Apri il progetto cspsample presente nella directory Partner-Center-Java-Samples\secure-app-model\keyvault.

  4. Aggiorna le impostazioni dell'applicazione presenti nel file application.properties.

    azuread.authority=https://login.microsoftonline.com
    keyvault.baseurl=
    keyvault.clientId=
    keyvault.clientSecret=
    partnercenter.accountId=
    partnercenter.clientId=
    partnercenter.clientSecret=
    
  5. Quando esegui questo progetto di esempio, viene restituito il token di aggiornamento ottenuto durante il processo di consenso del partner. Il progetto richiede quindi un token di accesso per interagire con SDK per Centro per i partner per conto del partner.

  6. (Facoltativo) Se vuoi vedere come interagire con Azure Resource Manager e Microsoft Graph per conto del cliente, rimuovi il commento dalle chiamate delle funzioni RunAzureTask e RunGraphTask.

Autenticazione dei provider di panelli di controllo

Per i fornitori di pannelli di controllo è necessario che ogni partner supportato esegua il processo di consenso del partner. Al termine, il token di aggiornamento ottenuto tramite tale processo viene usato per accedere all'API REST e all'API .NET del Centro per i partner.

Nota

I fornitori del pannello di controllo devono avere almeno il ruolo applicazione cloud Amministrazione istrator nel tenant del cliente.

Esempi di autenticazione dei fornitori di pannelli di controllo

Per aiutare i fornitori di pannelli di controllo a comprendere come eseguire ogni operazione necessaria, sono stati sviluppati gli esempi seguenti. Quando si implementa la soluzione appropriata nell'ambiente, è importante sviluppare una soluzione che si lamenta con gli standard di codifica e i criteri di sicurezza.

.NET (autenticazione CPV)

  1. Sviluppa e distribuisci un processo per i partner Cloud Solution Provider per fornire il consenso appropriato. Per altre informazioni e un esempio, vedi il consenso del partner.

    Importante

    Le credenziali utente di un partner Cloud Solution Provider non devono essere archiviate. Il token di aggiornamento ottenuto tramite il processo di consenso del partner deve essere archiviato e usato per richiedere token di accesso per l'interazione con qualsiasi API Microsoft.

  2. Clona il repository Partner-Center-DotNet-Samples con Visual Studio o usando il comando seguente.

    git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
    
  3. Apri il progetto CPVApplication presente nella directory Partner-Center-DotNet-Samples\secure-app-model\keyvault.

  4. Aggiorna le impostazioni dell'applicazione presenti nel file App.config.

    <!-- 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. Imposta i valori appropriati delle variabili PartnerId e CustomerId presenti nel file Program.cs.

    // 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. Quando esegui questo progetto di esempio, viene restituito il token di aggiornamento per il partner specificato. Richiede quindi un token di accesso per accedere al Centro per i partner e a Microsoft Graph per conto del partner. L'attività successiva che esegue è l'eliminazione e la creazione di concessioni di autorizzazioni nel tenant del cliente. Poiché non esiste alcuna relazione tra il fornitore del pannello di controllo e il cliente, queste autorizzazioni devono essere aggiunte tramite l'API del Centro per i partner. Questo esempio illustra come eseguire questa operazione.

    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());
    

Dopo aver stabilito queste autorizzazioni, l'esempio esegue operazioni usando Microsoft Graph per conto del cliente.

Nota

Per altre informazioni su Microsoft Graph, vedere la panoramica di Microsoft Graph.

Java (autenticazione CPV)

  1. Sviluppa e distribuisci un processo per i partner Cloud Solution Provider per fornire il consenso appropriato. Per altre informazioni e un esempio, vedi il consenso del partner.

    Importante

    Le credenziali utente di un partner Cloud Solution Provider non devono essere archiviate. Il token di aggiornamento ottenuto tramite il processo di consenso del partner deve essere archiviato e usato per richiedere token di accesso per l'interazione con qualsiasi API Microsoft.

  2. Clona il repository Partner-Center-Java-Samples usando il comando seguente.

    git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
    
  3. Apri il progetto cpvsample presente nella directory Partner-Center-Java-Samples\secure-app-model\keyvault.

  4. Aggiorna le impostazioni dell'applicazione presenti nel file application.properties.

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

    Il valore di partnercenter.displayName deve corrispondere al nome visualizzato della tua applicazione del Marketplace.

  5. Imposta i valori appropriati delle variabili partnerId e customerId presenti nel file Program.java.

    partnerId = "SPECIFY-THE-PARTNER-TENANT-ID-HERE";
    customerId = "SPECIFY-THE-CUSTOMER-TENANT-ID-HERE";
    
  6. Quando esegui questo progetto di esempio, viene restituito il token di aggiornamento per il partner specificato. Il progetto richiede quindi un token per accedere al Centro per i partner per conto del partner. L'attività successiva che esegue è l'eliminazione e la creazione di concessioni di autorizzazioni nel tenant del cliente. Poiché non esiste alcuna relazione tra il fornitore del pannello di controllo e il cliente, queste autorizzazioni devono essere aggiunte tramite l'API del Centro per i partner. L'esempio seguente illustra come concedere le autorizzazioni.

    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);
    

Se vuoi vedere come interagire con Azure Resource Manager e Microsoft Graph per conto del cliente, rimuovi il commento dalle chiamate delle funzioni RunAzureTask e RunGraphTask.