Authentification auprès de l’Espace partenaires

S’applique à : Espace partenaires | Espace partenaires géré par 21Vianet | Espace partenaires de Microsoft Cloud for US Government

L’Espace partenaires utilise Microsoft Entra ID pour l’authentification. Quand vous interagissez avec l’API, le SDK ou le module PowerShell de l’Espace partenaires, vous devez configurer correctement une application Microsoft Entra, puis demander un jeton d’accès. Les jetons d’accès obtenus avec l’authentification d’application uniquement ou d’application + utilisateur peuvent être utilisés avec l’Espace partenaires. Deux éléments importants doivent cependant être pris en compte.

  • Utilisez l’authentification multifacteur lors de l’accès à l’API espace partenaires à l’aide de l’application + de l’authentification utilisateur. Pour plus d’informations sur cette modification, consultez Activer le modèle d’application sécurisé.

  • Toutes les opérations de l’API Espace partenaires ne prennent pas en charge l’authentification d’application uniquement. Vous devrez utiliser l’authentification d’application + utilisateur dans certains scénarios. Sous le titre Conditions préalables de chaque article, vous trouverez la documentation indiquant si l’authentification de l’application uniquement, l’application + l’authentification utilisateur ou les deux sont prises en charge.

Important

Azure Active Directory (Azure AD) Graph est déconseillé depuis le 30 juin 2023. À l’avenir, nous n’effectuons aucun investissement supplémentaire dans Azure AD Graph. Les API Graph Azure AD n’ont pas de contrat SLA ou de maintenance au-delà des correctifs liés à la sécurité. Nous limiterons les investissements dans de nouvelles fonctions et fonctionnalités à Microsoft Graph.

Nous allons mettre hors service Azure AD Graph en étapes incrémentielles afin que vous ayez suffisamment de temps pour migrer vos applications vers les API Microsoft Graph. À une date ultérieure que nous annoncerons, nous bloquerons la création de toutes les nouvelles applications à l’aide d’Azure AD Graph.

Pour plus d’informations, consultez Important : Suppression du module Azure AD Graph et Dépréciation du module PowerShell.

Configuration initiale

  1. Pour commencer, vous devez vérifier que vous disposez à la fois d’un compte Espace partenaires principal et d’un compte Espace partenaires de bac à sable (sandbox) d’intégration. Pour plus d’informations, consultez Configurer des comptes Espace partenaires pour l’accès aux API. Notez l’ID d’inscription et le secret de l’application Microsoft Entra (la clé secrète client est requise pour l’identification de l’application uniquement) pour votre compte principal et votre compte de bac à sable d’intégration.

  2. Connectez-vous à Microsoft Entra ID à partir du Portail Azure. Dans Autorisations pour d’autres applications, définissez des autorisations pour Windows Azure Active Directory sur Autorisations déléguées, puis sélectionnez Accéder au répertoire en tant qu’utilisateur actuellement connecté et Activer la connexion et lire le profil utilisateur.

  3. Dans le portail Azure, ajoutez une application. Recherchez « Espace partenaires Microsoft », qui est l’application De l’Espace partenaires Microsoft. Définissez Autorisations déléguées sur Accéder à l’API Espace partenaires. Si vous utilisez l’Espace partenaires pour Microsoft Cloud pour le gouvernement des États-Unis, cette étape est obligatoire. Si vous utilisez une instance globale de l’Espace partenaires, cette étape est facultative. Les partenaires CSP peuvent utiliser la fonctionnalité Gestion des applications dans l’Espace partenaires pour contourner cette étape pour l’instance globale de l’Espace partenaires.

Authentification d’application uniquement

Si vous souhaitez utiliser l’authentification d’application uniquement pour accéder à l’API REST, l’API .NET, l’API Java ou le module PowerShell de l’Espace partenaires, vous pouvez le faire en utilisant les instructions suivantes.

.NET (authentification d’application uniquement)

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 (authentification d’application uniquement)

Le Kit de développement logiciel (SDK) Java de l’Espace partenaires peut être utilisé pour gérer les ressources de l’Espace partenaires. Il s’agit d’un projet open source géré par la communauté partenaire et non officiellement pris en charge par Microsoft. Si vous rencontrez un problème, vous pouvez obtenir de l’aide auprès de la communauté ou le signaler dans GitHub.

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

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

REST (authentification d’application uniquement)

Demande 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

Réponse 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"}

Authentification d’application + utilisateur

Historiquement, l’octroi d’informations d’identification du mot de passe du propriétaire de la ressource a été utilisé pour demander un jeton d’accès à utiliser avec l’API REST, l’API .NET, l’API Java ou le module PowerShell de l’Espace partenaires. Cette méthode a été utilisée pour demander un jeton d’accès auprès de Microsoft Entra ID à l’aide d’un identificateur client et d’informations d’identification utilisateur. Toutefois, cette approche ne fonctionnera plus, car l’Espace partenaires nécessite une authentification multifacteur, lors de l’utilisation de l’authentification de l’application + utilisateur. Pour se conformer à cette exigence, Microsoft a introduit une infrastructure sécurisée et évolutive pour l’authentification des partenaires fournisseur de solutions Cloud (CSP) et des fournisseurs de panneau de configuration (CPV) à l’aide de l’authentification multifacteur. Cette infrastructure est connue sous le nom de modèle d’application sécurisée et se compose d’un processus de consentement et d’une demande de jeton d’accès à l’aide d’un jeton d’actualisation.

Le processus de consentement du partenaire est un processus interactif où le partenaire s’authentifie à l’aide de l’authentification multifacteur, consent à l’application et qu’un jeton d’actualisation est stocké dans un référentiel sécurisé tel qu’Azure Key Vault. Nous vous recommandons d’utiliser un compte dédié à des fins d’intégration pour ce processus.

Important

La solution d’authentification multifacteur appropriée doit être activée pour le compte de service utilisé dans le processus de consentement du partenaire. Si ce n’est pas le cas, le jeton d’actualisation qui en résulte n’est pas conforme aux exigences de sécurité.

Exemples pour l’authentification d’application + utilisateur

Le processus de consentement du partenaire peut être effectué de plusieurs façons. Pour aider les partenaires à comprendre comment effectuer chaque opération requise, nous avons développé les exemples suivants. Lorsque vous implémentez la solution appropriée dans votre environnement, il est important de développer une solution qui est plainte avec vos normes de codage et vos stratégies de sécurité.

.NET (authentification d’application + utilisateur)

L’exemple de projet de consentement de partenaire montre comment utiliser un site web développé avec ASP.NET pour recueillir le consentement, demander un jeton d’actualisation et le stocker de façon sécurisée dans Azure Key Vault. Effectuez les étapes suivantes afin de créer les prérequis nécessaires pour cet exemple.

  1. Créez une instance Azure Key Vault en utilisant le portail Azure ou les commandes PowerShell suivantes. Avant d’exécuter la commande, veillez à modifier les valeurs des paramètres de façon appropriée. Le nom du coffre doit être unique.

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

    Pour plus d’informations sur la création d’un coffre de clés Azure, consultez Démarrage rapide : Définir et récupérer un secret à partir d’Azure Key Vault à l’aide du Portail Azure ou du démarrage rapide : Définir et récupérer un secret à partir d’Azure Key Vault à l’aide de PowerShell. Ensuite, définissez et récupérez un secret.

  2. Créez une application Microsoft Entra et une clé à l’aide de la Portail Azure ou des commandes suivantes.

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

    Veillez à prendre note des valeurs de l’identificateur de l’application et du secret, car elles seront utilisées dans les étapes ci-dessous.

  3. Accordez à l’application Microsoft Entra les autorisations de lecture des secrets à l’aide de la Portail Azure ou des commandes suivantes.

    # 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. Créez une application Microsoft Entra configurée pour l’Espace partenaires. Effectuez les actions suivantes pour réaliser cette étape.

    • Accédez à la fonctionnalité de gestion des applications de l’Espace partenaires
    • Sélectionnez Ajouter une application web pour créer une application Microsoft Entra.

    Veillez à renseigner les valeurs pour ID d’application, ID de compte et Clé, car elles seront utilisées dans les étapes ci-dessous.

  5. Clonez le dépôt Partner-Center-DotNet-Samples en utilisant Visual Studio ou la commande suivante.

    git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
    
  6. Ouvrez le projet PartnerConsent qui se trouve dans le répertoire Partner-Center-DotNet-Samples\secure-app-model\keyvault.

  7. Renseignez les paramètres de l’application qui se trouvent dans le fichier 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="" />
    

    Important

    Les informations sensibles, comme les secrets d’application, ne doivent pas être stockées dans des fichiers de configuration. Cela a néanmoins été fait ici, car il ne s’agit que d’un exemple d’application. Avec votre application de production, nous vous recommandons fortement d’utiliser l’authentification basée sur les certificats. Pour plus d’informations, consultez Informations d’identification de certificat pour l’authentification d’application.

  8. Lorsque vous exécutez cet exemple de projet, il vous invite à l’authentification. Une fois l’authentification réussie, un jeton d’accès est demandé à partir de l’ID Microsoft Entra. Les informations retournées par l’ID Microsoft Entra incluent un jeton d’actualisation stocké dans l’instance configurée d’Azure Key Vault.

Java (authentification d’application + utilisateur)

L’exemple de projet de consentement de partenaire montre comment utiliser un site web développé avec JSP pour recueillir le consentement, demander un jeton d’actualisation et le stocker de façon sécurisée dans Azure Key Vault. Effectuez ce qui suit afin de créer les prérequis nécessaires pour cet exemple.

  1. Créez une instance Azure Key Vault en utilisant le portail Azure ou les commandes PowerShell suivantes. Avant d’exécuter la commande, veillez à modifier les valeurs des paramètres de façon appropriée. Le nom du coffre doit être unique.

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

    Pour plus d’informations sur la création d’un coffre de clés Azure, consultez Démarrage rapide : Définir et récupérer un secret à partir d’Azure Key Vault à l’aide du Portail Azure ou du démarrage rapide : Définir et récupérer un secret à partir d’Azure Key Vault à l’aide de PowerShell.

  2. Créez une application Microsoft Entra et une clé à l’aide de la Portail Azure ou des commandes suivantes.

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

    Veillez à prendre note des valeurs de l’identificateur de l’application et du secret, car elles seront utilisées dans les étapes ci-dessous.

  3. Accordez à l’application Microsoft Entra nouvellement créée les autorisations de lecture des secrets à l’aide de la Portail Azure ou des commandes suivantes.

    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. Créez une application Microsoft Entra configurée pour l’Espace partenaires. Effectuez les opérations suivantes pour réaliser cette étape.

    • Accédez à la fonctionnalité de gestion des applications de l’Espace partenaires
    • Sélectionnez Ajouter une application web pour créer une application Microsoft Entra.

    Veillez à renseigner les valeurs pour ID d’application, ID de compte et Clé, car elles seront utilisées dans les étapes ci-dessous.

  5. Clonez le dépôt Partner-Center-Java-Samples en utilisant la commande suivante.

    git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
    
  6. Ouvrez le projet PartnerConsent qui se trouve dans le répertoire Partner-Center-Java-Samples\secure-app-model\keyvault.

  7. Renseignez les paramètres de l’application qui se trouvent dans le fichier 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>
    

    Important

    Les informations sensibles, comme les secrets d’application, ne doivent pas être stockées dans des fichiers de configuration. Cela a néanmoins été fait ici, car il ne s’agit que d’un exemple d’application. Avec votre application de production, nous vous recommandons fortement d’utiliser l’authentification basée sur les certificats. Pour plus d’informations, consultez Authentification par certificat de coffre de clés.

  8. Lorsque vous exécutez cet exemple de projet, il vous invite à l’authentification. Une fois l’authentification réussie, un jeton d’accès est demandé à partir de l’ID Microsoft Entra. Les informations retournées par l’ID Microsoft Entra incluent un jeton d’actualisation stocké dans l’instance configurée d’Azure Key Vault.

Authentification de fournisseur de solutions cloud

Les partenaires du programme Fournisseur de solutions cloud peuvent utiliser le jeton d’actualisation obtenu via le processus de consentement de partenaire.

Exemples pour l’authentification de fournisseur de solutions cloud

Pour aider les partenaires à comprendre comment effectuer chaque opération requise, nous avons développé les exemples suivants. Lorsque vous implémentez la solution appropriée dans votre environnement, il est important de développer une solution qui est plainte avec vos normes de codage et vos stratégies de sécurité.

.NET (authentification de fournisseur de solutions cloud)

  1. Si ce n’est déjà fait, effectuez le processus de consentement du partenaire.

  2. Clonez le dépôt Partner-Center-DotNet-Samples en utilisant Visual Studio ou la commande suivante.

    git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
    
  3. Ouvrez le projet CSPApplication qui se trouve dans le répertoire Partner-Center-DotNet-Samples\secure-app-model\keyvault.

  4. Mettez à jour les paramètres de l’application qui se trouvent dans le fichier 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. Définissez les valeurs appropriées pour les variables PartnerId et CustomerId qui se trouvent dans le fichier 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. Quand vous exécutez cet exemple de projet, il obtient le jeton d’actualisation obtenu lors du processus de consentement de partenaire. Ensuite, il demande un jeton d’accès pour interagir avec le SDK de l’Espace partenaires pour le compte du partenaire. Enfin, il demande un jeton d’accès pour interagir avec Microsoft Graph pour le compte du client spécifié.

Java (authentification de fournisseur de solutions cloud)

  1. Si vous ne l’avez pas déjà fait, effectuez le processus de consentement du partenaire.

  2. Clonez le dépôt Partner-Center-Java-Samples en utilisant Visual Studio ou la commande suivante

    git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
    
  3. Ouvrez le projet cspsample qui se trouve dans le répertoire Partner-Center-Java-Samples\secure-app-model\keyvault.

  4. Mettez à jour les paramètres de l’application qui se trouvent dans le fichier application.properties.

    azuread.authority=https://login.microsoftonline.com
    keyvault.baseurl=
    keyvault.clientId=
    keyvault.clientSecret=
    partnercenter.accountId=
    partnercenter.clientId=
    partnercenter.clientSecret=
    
  5. Quand vous exécutez cet exemple de projet, il obtient le jeton d’actualisation obtenu lors du processus de consentement de partenaire. Ensuite, il demande un jeton d’accès pour interagir avec le SDK de l’Espace partenaires pour le compte du partenaire.

  6. Facultatif : décommentez les appels de fonction RunAzureTask et RunGraphTask si vous voulez voir comment interagir avec Azure Resource Manager et Microsoft Graph pour le compte du client.

Authentification de fournisseur de panneau de configuration

Les fournisseurs de panneau de configuration ont besoin que chaque partenaire qu’ils prennent en charge effectue le processus de consentement de partenaire. Une fois cette opération terminée, le jeton d’actualisation obtenu via ce processus est utilisé pour accéder à l’API REST et à l’API .NET de l’Espace partenaires.

Remarque

Les fournisseurs de panneaux de contrôle doivent avoir au minimum le rôle d'administrateur d'application cloud dans le locataire du client.

Exemples pour l’authentification de fournisseur de panneau de configuration

Pour aider les fournisseurs du panneau de configuration à comprendre comment effectuer chaque opération requise, nous avons développé les exemples suivants. Lorsque vous implémentez la solution appropriée dans votre environnement, il est important de développer une solution qui est plainte avec vos normes de codage et vos stratégies de sécurité.

.NET (authentification de fournisseur de panneau de configuration)

  1. Développez et déployez un processus pour les partenaires fournisseurs de solutions cloud afin de fournir le consentement approprié. Pour plus d'informations et pour obtenir un exemple, consultez Consentement du partenaire.

    Important

    Les informations d’identification utilisateur d’un partenaire fournisseur de solutions cloud ne doivent pas être stockées. Le jeton d’actualisation obtenu via le processus de consentement de partenaire doit être stocké et utilisé afin de demander des jetons d’accès pour interagir avec les API Microsoft.

  2. Clonez le dépôt Partner-Center-DotNet-Samples en utilisant Visual Studio ou la commande suivante.

    git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
    
  3. Ouvrez le projet CPVApplication qui se trouve dans le répertoire Partner-Center-DotNet-Samples\secure-app-model\keyvault.

  4. Mettez à jour les paramètres de l’application qui se trouvent dans le fichier 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. Définissez les valeurs appropriées pour les variables PartnerId et CustomerId qui se trouvent dans le fichier 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. Quand vous exécutez cet exemple de projet, il obtient le jeton d’actualisation pour le partenaire spécifié. Ensuite, il demande un jeton d'accès pour accéder à l'Espace partenaires et à Microsoft Graph au nom du partenaire. La tâche suivante qu’il effectue est la suppression et la création d’octrois d’autorisations dans le locataire du client. Comme il n’existe aucune relation entre le fournisseur du panneau de configuration et le client, ces autorisations doivent être ajoutées en utilisant l’API Espace partenaires. L’exemple suivant montre comment procéder.

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

Une fois ces autorisations établies, l'exemple effectue des opérations à l'aide de Microsoft Graph pour le compte du client.

Remarque

Pour plus d'informations sur Microsoft Graph, consultez la présentation de Microsoft Graph.

Java (authentification de fournisseur de panneau de configuration)

  1. Développez et déployez un processus pour les partenaires fournisseurs de solutions cloud afin de fournir le consentement approprié. Pour plus d'informations et pour obtenir un exemple, consultez Consentement du partenaire.

    Important

    Les informations d’identification utilisateur d’un partenaire fournisseur de solutions cloud ne doivent pas être stockées. Le jeton d’actualisation obtenu via le processus de consentement de partenaire doit être stocké et utilisé afin de demander des jetons d’accès pour interagir avec les API Microsoft.

  2. Clonez le dépôt Partner-Center-Java-Samples en utilisant la commande suivante.

    git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
    
  3. Ouvrez le projet cpvsample qui se trouve dans le répertoire Partner-Center-Java-Samples\secure-app-model\keyvault.

  4. Mettez à jour les paramètres de l’application qui se trouvent dans le fichier application.properties.

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

    La valeur de partnercenter.displayName doit être le nom d’affichage de votre application de la Place de marché.

  5. Définissez les valeurs appropriées pour les variables partnerId et customerId qui se trouvent dans le fichier Program.java.

    partnerId = "SPECIFY-THE-PARTNER-TENANT-ID-HERE";
    customerId = "SPECIFY-THE-CUSTOMER-TENANT-ID-HERE";
    
  6. Quand vous exécutez cet exemple de projet, il obtient le jeton d’actualisation pour le partenaire spécifié. Ensuite, il demande un jeton d’accès pour accéder à l’Espace partenaires pour le compte du partenaire. La tâche suivante qu’il effectue est la suppression et la création d’octrois d’autorisations dans le locataire du client. Comme il n’existe aucune relation entre le fournisseur du panneau de configuration et le client, ces autorisations doivent être ajoutées en utilisant l’API Espace partenaires. L’exemple suivant montre comment accorder les autorisations.

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

Décommentez les appels de fonction RunAzureTask et RunGraphTask si vous voulez voir comment interagir avec Azure Resource Manager et Microsoft Graph pour le compte du client.