Authentification auprès de l’Espace partenairesPartner Center authentication

S’applique à :Applies to:

  • Espace partenairesPartner Center
  • Espace partenaires géré par 21VianetPartner Center operated by 21Vianet
  • Espace partenaires de Microsoft Cloud GermanyPartner Center for Microsoft Cloud Germany
  • Espace partenaires de Microsoft Cloud for US GovernmentPartner Center for Microsoft Cloud for US Government

L’Espace partenaires utilise Azure Active Directory pour l’authentification.Partner Center uses Azure Active Directory for authentication. Quand vous interagissez avec l’API, le SDK ou le module PowerShell de l’Espace partenaires, vous devez configurer correctement une application Azure AD, puis demander un jeton d’accès.When interacting with the Partner Center API, SDK, or PowerShell module you must correctly configure an Azure AD application and then request an access token. Les jetons d’accès obtenus avec l’authentification d’application uniquement ou d’application + utilisateur peuvent être utilisés avec l’Espace partenaires.Access tokens obtained using app only or app + user authentication can be used with the Partner Center. Deux éléments importants doivent cependant être pris en compte.However, there are two important items that need to be considered

  • Utilisez l’authentification multifacteur lors de l’accès à l’API Espace partenaires avec l’authentification d’application + utilisateur.Use multi-factor authentication when accessing the Partner Center API using app + user authentication. Pour plus d’informations sur cette modification, consultez Activer le modèle d’application sécurisé.For more information regarding this change, see Enable secure application model.

  • Toutes les opérations de l’API Espace partenaires ne prennent pas en charge l’authentification d’application uniquement.Not all of the operations the Partner Center API support app only authentication. Vous devrez utiliser l’authentification d’application + utilisateur dans certains scénarios.There are certain scenarios where you'll be required to use app + user authentication. Sous le titre Prérequis de chaque article, vous trouverez la documentation qui indique si l’authentification d’application uniquement, l’authentification d’application + utilisateur ou les deux sont prises en charge.Under the Prerequisites heading on each article, you'll find documentation that states whether app only authentication, app + user authentication, or both are supported.

Configuration initialeInitial setup

  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.To begin, you need to make sure that you have both a primary Partner Center account, and an integration sandbox Partner Center account. Pour plus d’informations, consultez Configurer des comptes Espace partenaires pour l’accès aux API.For more information, see Set up Partner Center accounts for API access. Notez l’ID d’inscription et le secret de l’application Azure AAD et le secret (le secret client est nécessaire pour l’identification d’application uniquement) pour votre compte principal et votre compte de bac à sable (sandbox) d’intégration.Make note of the Azure AAD App registration ID and Secret (client secret is required for App only identification) for both your primary account and your integration sandbox account.

  2. Connectez-vous à Azure AD à partir du portail Azure.Sign in to Azure AD from the Azure portal. 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.In permissions to other applications, set permissions for Windows Azure Active Directory to Delegated Permissions, and select both Access the directory as the signed-in user and Sign in and read user profile.

  3. Dans le portail Azure, ajoutez une application.In the Azure portal, Add application. Recherchez « Espace partenaires Microsoft », qui est l’application Espace partenaires Microsoft.Search for "Microsoft Partner Center", which is the Microsoft Partner Center application. Définissez Autorisations déléguées sur Accéder à l’API Espace partenaires.Set the Delegated Permissions to Access Partner Center API. Si vous utilisez l’Espace partenaires pour Microsoft Cloud Germany ou l’Espace partenaires pour Microsoft Cloud for US Government, cette étape est obligatoire.If you are using Partner Center for Microsoft Cloud Germany or Partner Center for Microsoft Cloud for US Government, this step is mandatory. Si vous utilisez l’instance globale de l’Espace partenaires, cette étape est facultative.If you are using Partner Center global instance, this step is optional. Les partenaires CSP peuvent utiliser la fonctionnalité de gestion des applications dans le portail de l’Espace partenaires pour ignorer cette étape pour l’instance globale de l’Espace partenaires.CSP Partners can use the App Management feature in the Partner Center portal to bypass this step for Partner Center global instance.

Authentification d’application uniquementApp-only authentication

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 tirant parti des instructions suivantes.If you would like to use app-only authentication to access the Partner Center REST API, .NET API, Java API, or PowerShell module then you can do so by leveraging the following instructions.

.NET (authentification d’application uniquement).NET (app-only authentication)

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)Java (app-only authentication)

Le SDK Java de l’Espace partenaires est couramment utilisé par les partenaires pour la gestion de leurs ressources dans l’Espace partenaires.The Partner Center Java SDK is commonly used by partners to manage their Partner Center resources. Il s’agit d’un projet open source géré par la communauté des partenaires.It's an open-source project maintained by the partner community. Étant donné que ce module est géré par la communauté des partenaires, il n’est pas officiellement pris en charge par Microsoft.Since this module is maintained by the partner community, it isn't officially supported by Microsoft. Si vous rencontrez un problème, vous pouvez obtenir de l’aide auprès de la communauté ou le signaler dans GitHub.You can get help from the community or open an issue on GitHub if you experience a problem.

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

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

REST (authentification d’application uniquement)REST (app-only authentication)

Demande RESTREST request

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

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 + utilisateurApp + User authentication

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.Historically the resource owner password credentials grant has been used to request an access token for use with the Partner Center REST API, .NET API, Java API, or PowerShell module. Cette méthode permettait de demander un jeton d’accès auprès d’Azure Active Directory en utilisant un identificateur de client et des informations d’identification d’utilisateur.That method was used to request an access token from Azure Active Directory using a client identifier and user credentials. Toutefois, cette approche ne fonctionnera plus, car l’Espace partenaires exige l’authentification multifacteur lors de l’utilisation de l’authentification d’application + utilisateur.However, this approach will no longer work because Partner Center requires multi-factor authentication, when using app + user authentication. Pour se conformer à cette exigence, Microsoft a introduit un framework sécurisé et scalable pour l’authentification des partenaires du programme Fournisseur de solutions cloud (CSP) et des fournisseurs de panneaux de configuration (CPV) qui utilisent l’authentification multifacteur.To comply with this requirement Microsoft has introduced a secure, scalable framework for authenticating Cloud Solution Provider (CSP) partners and control panel vendors (CPV) using multi-factor authentication. Ce framework est connu sous le nom de Modèle d’application sécurisé, et il est constitué d’un processus de consentement et d’une demande de jeton d’accès avec un jeton d’actualisation.This framework is known as the Secure Application Model, and it is composed of a consent process and a request for an access token using a refresh token.

Le processus de consentement du partenaire est un processus interactif où le partenaire s’authentifie avec l’authentification multifacteur et consent à l’application, et où un jeton d’actualisation est stocké dans un référentiel sécurisé comme Azure Key Vault.The partner consent process is an interactive process where the partner authenticates using multi-factor authentication, consents to the application, and a refresh token is stored in a secure repository such as Azure Key Vault. Nous vous recommandons d’utiliser un compte dédié à des fins d’intégration pour ce processus.We recommend that a dedicated account for integration purposes be used for this process.

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.The appropriate multi-factor authentication solution should be enabled for the service account used in the partner consent process. Si ce n’est pas le cas, le jeton d’actualisation qui en résulte n’est pas conforme aux exigences de sécurité.If it isn't then the resulting refresh token will not be compliant with security requirements.

Exemples pour l’authentification d’application + utilisateurSamples for App + User authentication

Le processus de consentement du partenaire peut être effectué de différentes façons.The partner consent process can be performed in a number of ways. Pour aider les partenaires à comprendre comment effectuer chaque opération nécessaire, nous avons développé les exemples suivants.To help partners understand how to perform each required operation, we have developed the following samples. Quand vous implémentez la solution appropriée dans votre environnement, il est important de développer une solution qui est conforme à vos standards de codage et à vos stratégies de sécurité.When you implement the appropriate solution in your environment, it is important that you develop a solution that is complaint with your coding standards and security policies.

.NET (authentification d’application + utilisateur).NET (app+user authentication)

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.The partner consent sample project demonstrates how to utilize a website developed using ASP.NET to capture consent, request a refresh token, and securely store it in Azure Key Vault. Effectuez les étapes suivantes afin de créer les prérequis nécessaires pour cet exemple.Perform the following steps to create the required prerequisites for this sample.

  1. Créez une instance Azure Key Vault en utilisant le portail Azure ou les commandes PowerShell suivantes.Create an instance of Azure Key Vault using the Azure portal or the following PowerShell commands. Avant d’exécuter la commande, veillez à modifier les valeurs des paramètres de façon appropriée.Before executing the command, be sure to modify the parameter values accordingly. Le nom du coffre doit être unique.The vault name must be 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 Azure Key Vault, voir Démarrage rapide : Définir et récupérer un secret auprès d’Azure Key Vault avec le portail Azure ou Démarrage rapide : Définir et récupérer un secret auprès d’Azure Key Vault à l’aide de PowerShell.For more information about creating an Azure Key Vault, see Quickstart: Set and retrieve a secret from Azure Key Vault using the Azure portal or Quickstart: Set and retrieve a secret from Azure Key Vault using PowerShell. Ensuite, définissez et récupérez un secret.Then set and retrieve a secret.

  2. Créez une application Azure AD et une clé en utilisant le portail Azure ou les commandes suivantes.Create an Azure AD Application and a key using the Azure portal or the following commands.

    Connect-AzureAD
    
    $SessionInfo = Get-AzureADCurrentSessionInfo
    
    $app = New-AzureADApplication -DisplayName 'My Vault Access App' -IdentifierUris 'https://$($SessionInfo.TenantDomain)/$((New-Guid).ToString())'
    $password = New-AzureADApplicationPasswordCredential -ObjectId $app.ObjectId
    
    Write-Host "ApplicationId       = $($app.AppId)"
    Write-Host "ApplicationSecret   = $($password.Value)"
    

    Veillez à prendre note des valeurs de l’identificateur de l’application et du secret, car elles seront utilisées dans les étapes ci-dessous.Be sure to make note of the application identifier and secret values because they'll be used in the steps below.

  3. Accordez à l’application Azure AD nouvellement créée les autorisations de lire les secrets en utilisant le portail Azure ou les commandes suivantes.Grant the newly create Azure AD application the read secrets permissions using the Azure portal or the following commands.

    $app = Get-AzureADApplication -Filter {AppId -eq 'ENTER-APP-ID-HERE'}
    
    Set-AzureRmKeyVaultAccessPolicy -VaultName ContosoVault -ObjectId $app.ObjectId -PermissionsToSecrets get
    
  4. Créez une application Azure AD configurée pour l’Espace partenaires.Create an Azure AD application that is configured for Partner Center. Effectuez les actions suivantes pour réaliser cette étape.Perform the following actions to complete this step.

    • Accédez à la fonctionnalité Gestion des applications du tableau de bord de l’Espace partenairesBrowse to the App management feature of the Partner Center Dashboard
    • Cliquez sur Ajouter une nouvelle application web pour créer une application Azure AD.Click Add new web app to create a new Azure AD application.

    Veillez à renseigner les valeurs pour ID d’application, ID de compte* et Clé, car elles seront utilisées dans les étapes ci-dessous.Be sure to document the App ID, *Account ID**, and Key values because they'll be used in the steps below.

  5. Clonez le dépôt Partner-Center-DotNet-Samples en utilisant Visual Studio ou la commande suivante.Clone the Partner-Center-DotNet-Samples repository using Visual Studio or the following command.

    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.Open the PartnerConsent project found in the Partner-Center-DotNet-Samples\secure-app-model\keyvault directory.

  7. Renseignez les paramètres de l’application qui se trouvent dans le fichier web.configPopulate the application settings found in the 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.Sensitive information such as application secrets should not be stored in configuration files. Cela a néanmoins été fait ici, car il ne s’agit que d’un exemple d’application.It was done here because this is a sample application. Avec votre application de production, nous vous recommandons fortement d’utiliser l’authentification basée sur les certificats.With your production application we strongly recommend that you use certificate-based authentication. Pour plus d’informations, consultez Informations d’identification de certificat pour l’authentification d’application.For more information, see Certificate credentials for application authentication.

  8. Quand vous exécutez cet exemple de projet, il vous invite à vous authentifier.When you run this sample project, it will prompt you for authentication. Une fois l’authentification réussie, un jeton d’accès est demandé auprès d’Azure AD.After successfully authenticating, an access token is requested from Azure AD. Les informations retournées par Azure AD incluent un jeton d’actualisation qui est stocké dans l’instance Azure Key Vault configurée.The information returned from Azure AD includes a refresh token that is stored in the configured instance of Azure Key Vault.

Java (authentification d’application + utilisateur)Java (app+user authentication)

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.The partner consent sample project demonstrates how to utilize a website developed using JSP to capture consent, request a refresh token, and secure store in Azure Key Vault. Effectuez ce qui suit afin de créer les prérequis nécessaires pour cet exemple.Perform the following to create the required prerequisites for this sample.

  1. Créez une instance Azure Key Vault en utilisant le portail Azure ou les commandes PowerShell suivantes.Create an instance of Azure Key Vault using the Azure portal or the following PowerShell commands. Avant d’exécuter la commande, veillez à modifier les valeurs des paramètres de façon appropriée.Before executing the command, be sure to modify the parameter values accordingly. Le nom du coffre doit être unique.The vault name must be 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 Azure Key Vault, voir Démarrage rapide : Définir et récupérer un secret auprès d’Azure Key Vault avec le portail Azure ou Démarrage rapide : Définir et récupérer un secret auprès d’Azure Key Vault à l’aide de PowerShell.For more information about creating an Azure Key Vault, see Quickstart: Set and retrieve a secret from Azure Key Vault using the Azure portal or Quickstart: Set and retrieve a secret from Azure Key Vault using PowerShell.

  2. Créez une application Azure AD et une clé en utilisant le portail Azure ou les commandes suivantes.Create an Azure AD Application and a key using the Azure portal or the following commands.

    Connect-AzureAD
    
    $SessionInfo = Get-AzureADCurrentSessionInfo
    
    $app = New-AzureADApplication -DisplayName 'My Vault Access App' -IdentifierUris 'https://$($SessionInfo.TenantDomain)/$((New-Guid).ToString())'
    $password = New-AzureADApplicationPasswordCredential -ObjectId $app.ObjectId
    
    Write-Host "ApplicationId       = $($app.AppId)"
    Write-Host "ApplicationSecret   = $($password.Value)"
    

    Veillez à prendre note des valeurs de l’identificateur de l’application et du secret, car elles seront utilisées dans les étapes ci-dessous.Be sure to document the application identifier and secret values because they'll be used in the steps below.

  3. Accordez à l’application Azure AD nouvellement créée les autorisations de lire les secrets en utilisant le portail Azure ou les commandes suivantes.Grant the newly created Azure AD application the read secrets permissions using the Azure portal or the following commands.

    $app = Get-AzureADApplication -Filter {AppId -eq 'ENTER-APP-ID-HERE'}
    
    Set-AzureRmKeyVaultAccessPolicy -VaultName ContosoVault -ObjectId $app.ObjectId -PermissionsToSecrets get
    
  4. Créez une application Azure AD configurée pour l’Espace partenaires.Create an Azure AD application that is configured for Partner Center. Effectuez les opérations suivantes pour réaliser cette étape.Perform the following to complete this step.

    • Accédez à la fonctionnalité Gestion des applications du tableau de bord de l’Espace partenairesBrowse to the App management feature of the Partner Center Dashboard
    • Cliquez sur Ajouter une nouvelle application web pour créer une application Azure AD.Click Add new web app to create a new Azure AD application.

    Veillez à renseigner les valeurs pour ID d’application, ID de compte* et Clé, car elles seront utilisées dans les étapes ci-dessous.Be sure to document the App ID, *Account ID**, and Key values because they'll be used in the steps below.

  5. Clonez le dépôt Partner-Center-Java-Samples en utilisant la commande suivante.Clone the Partner-Center-Java-Samples repository using the following command

    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.Open the PartnerConsent project found in the Partner-Center-Java-Samples\secure-app-model\keyvault directory.

  7. Renseignez les paramètres de l’application qui se trouvent dans le fichier web.xmlPopulate the application settings found in the web.xml file

    <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.Sensitive information such as application secrets should not be stored in configurations files. Cela a néanmoins été fait ici, car il ne s’agit que d’un exemple d’application.It was done here because this is a sample application. Avec votre application de production, nous vous recommandons fortement d’utiliser l’authentification basée sur les certificats.With your production application, we strongly recommend that you use certificate based authenticate. Pour plus d’informations, consultez Authentification par certificat de coffre de clés.For more information, see Key Vault Certificate authentication.

  8. Quand vous exécutez cet exemple de projet, il vous invite à vous authentifier.When you run this sample project, it will prompt you for authentication. Une fois l’authentification réussie, un jeton d’accès est demandé auprès d’Azure AD.After successfully authenticating, an access token is requested from Azure AD. Les informations retournées par Azure AD incluent un jeton d’actualisation qui est stocké dans l’instance Azure Key Vault configurée.The information returned from Azure AD includes a refresh token that is stored in the configured instance of Azure Key Vault.

Authentification de fournisseur de solutions cloudCloud Solution Provider authentication

Les partenaires du programme Fournisseur de solutions cloud peuvent utiliser le jeton d’actualisation obtenu via le processus de consentement de partenaire.Cloud Solution Provider partners can use the refresh token obtained through the partner consent process.

Exemples pour l’authentification de fournisseur de solutions cloudSamples for Cloud Solution Provider authentication

Pour aider les partenaires à comprendre comment effectuer chaque opération nécessaire, nous avons développé les exemples suivants.To help partners understand how to perform each required operation, we have developed the following samples. Quand vous implémentez la solution appropriée dans votre environnement, il est important de développer une solution qui est conforme à vos standards de codage et à vos stratégies de sécurité.When you implement the appropriate solution in your environment, it is important that you develop a solution that is complaint with your coding standards and security policies.

.NET (authentification de fournisseur de solutions cloud).NET (CSP authentication)

  1. Si vous ne l’avez pas encore fait, effectuez le processus de consentement de partenaire.If you have not already done so, perform the partner consent process.

  2. Clonez le dépôt Partner-Center-DotNet-Samples en utilisant Visual Studio ou la commande suivante.Clone the Partner-Center-DotNet-Samples repository using Visual Studio or the following command

    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.Open the CSPApplication project found in the Partner-Center-DotNet-Samples\secure-app-model\keyvault directory.

  4. Mettez à jour les paramètres de l’application qui se trouvent dans le fichier App.config.Update the application settings found in the App.config file.

    <!-- 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.Set the appropriate values for the PartnerId and CustomerId variables found in the Program.cs file.

    // 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.When you run this sample project, it obtains the refresh token obtained during the partner consent process. Ensuite, il demande un jeton d’accès pour interagir avec le SDK de l’Espace partenaires pour le compte du partenaire.Then, it requests an access token to interact with the Partner Center SDK on the partner's behalf. Enfin, il demande un jeton d’accès pour interagir avec Microsoft Graph pour le compte du client spécifié.Finally, it requests an access token to interact with Microsoft Graph on behalf of the specified customer.

Java (authentification de fournisseur de solutions cloud)Java (CSP authentication)

  1. Si vous ne l’avez pas encore fait, effectuez le processus de consentement de partenaire.If you have not done so already, perform the partner consent process.

  2. Clonez le dépôt Partner-Center-Java-Samples en utilisant Visual Studio ou la commande suivanteClone the Partner-Center-Java-Samples repository using Visual Studio or the following command

    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.Open the cspsample project found in the Partner-Center-Java-Samples\secure-app-model\keyvault directory.

  4. Mettez à jour les paramètres de l’application qui se trouvent dans le fichier application.properties.Update the application settings found in the application.properties file.

    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.When you run this sample project, it obtains the refresh token obtained during the partner consent process. Ensuite, il demande un jeton d’accès pour interagir avec le SDK de l’Espace partenaires pour le compte du partenaire.Then, it requests an access token to interact with the Partner Center SDK on the partner's behalf.

  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.Optional - uncomment the RunAzureTask and RunGraphTask function calls if you want to see how to interact with Azure Resource Manager and Microsoft Graph on behalf of the customer.

Authentification de fournisseur de panneau de configurationControl Panel Provider authentication

Les fournisseurs de panneau de configuration ont besoin que chaque partenaire qu’ils prennent en charge effectue le processus de consentement de partenaire.Control panel vendors need to have each partner they support perform the partner consent process. 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.Once that is completed the refresh token obtained through that process is used to access the Partner Center REST API and .NET API.

Exemples pour l’authentification de fournisseur de panneau de configurationSamples for Cloud Panel Provider authentication

Pour aider les fournisseurs de panneau de configuration à comprendre comment effectuer chaque opération nécessaire, nous avons développé les exemples suivants.To help control panel vendors understand how to perform each required operation, we have developed the following samples. Quand vous implémentez la solution appropriée dans votre environnement, il est important de développer une solution qui est conforme à vos standards de codage et à vos stratégies de sécurité.When you implement the appropriate solution in your environment, it is important that you develop a solution that is complaint with your coding standards and security policies.

.NET (authentification de fournisseur de panneau de configuration).NET (CPV authentication)

  1. Développez et déployez un processus pour les partenaires fournisseurs de solutions cloud afin de fournir le consentement approprié.Develop and deploy a process for Cloud Solution Provider partners to provide the appropriate consent. Pour plus d'informations et pour obtenir un exemple, consultez Consentement du partenaire.For more information an example, see partner consent.

    Important

    Les informations d’identification utilisateur d’un partenaire fournisseur de solutions cloud ne doivent pas être stockées.User credentials from a Cloud Solution Provider partner should not be stored. 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.The refresh token obtained through the partner consent process should be stored and used to request access tokens for interacting with any Microsoft API.

  2. Clonez le dépôt Partner-Center-DotNet-Samples en utilisant Visual Studio ou la commande suivante.Clone the Partner-Center-DotNet-Samples repository using Visual Studio or the following command

    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.Open the CPVApplication project found in the Partner-Center-DotNet-Samples\secure-app-model\keyvault directory.

  4. Mettez à jour les paramètres de l’application qui se trouvent dans le fichier App.config.Update the application settings found in the App.config file.

    <!-- 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.Set the appropriate values for the PartnerId and CustomerId variables found in the Program.cs file.

    // 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é.When you run this sample project, it obtains the refresh token for the specified partner. Ensuite, il demande un jeton d’accès pour accéder à l’Espace partenaires et à Azure AD Graph pour le compte du partenaire.Then, it requests an access token to access Partner Center and Azure AD Graph on behalf of the partner. La tâche suivante qu’il effectue est la suppression et la création d’octrois d’autorisations dans le locataire du client.The next task it performs is the deletion and creation of permission grants into the customer tenant. 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.Since there's no relationship between the control panel vendor and the customer, these permissions need to be added using the Partner Center API. L’exemple suivant montre comment procéder.The following example shows how to accomplish that.

    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\": \"00000002-0000-0000-c000-000000000000\", \"scope\":\"Domain.ReadWrite.All,User.ReadWrite.All,Directory.Read.All\"}"), // for Azure AD 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 Azure AD 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 en utilisant Azure AD Graph pour le compte du client.After these permissions have been established, the sample performs operations using Azure AD Graph on behalf of the customer.

Java (authentification de fournisseur de panneau de configuration)Java (CPV authentication)

  1. Développez et déployez un processus pour les partenaires fournisseurs de solutions cloud afin de fournir le consentement approprié.Develop and deploy a process for Cloud Solution Provider partners to provide the appropriate consent. Pour plus d'informations et pour obtenir un exemple, consultez Consentement du partenaire.For more information and an example, see the partner consent.

    Important

    Les informations d’identification utilisateur d’un partenaire fournisseur de solutions cloud ne doivent pas être stockées.User credentials from a Cloud Solution Provider partner should not be stored. 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.The refresh token obtained through the partner consent process should be stored and used to request access tokens for interacting with any Microsoft API.

  2. Clonez le dépôt Partner-Center-Java-Samples en utilisant la commande suivante.Clone the Partner-Center-Java-Samples repository using the following command

    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.Open the cpvsample project found in the Partner-Center-Java-Samples\secure-app-model\keyvault directory.

  4. Mettez à jour les paramètres de l’application qui se trouvent dans le fichier application.properties.Update the application settings found in the application.properties file.

    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é.The value for the partnercenter.displayName should be the display name of your marketplace application.

  5. Définissez les valeurs appropriées pour les variables partnerId et customerId qui se trouvent dans le fichier Program.java.Set the appropriate values for the partnerId and customerId variables found in the Program.java file.

    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é.When you run this sample project, it obtains the refresh token for the specified partner. Ensuite, il demande un jeton d’accès pour accéder à l’Espace partenaires pour le compte du partenaire.Then, it requests an access token to access Partner Center on behalf of the partner. La tâche suivante qu’il effectue est la suppression et la création d’octrois d’autorisations dans le locataire du client.The next task it performs is the deletion and creation of permission grants into the customer tenant. 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.Since there's no relationship between the control panel vendor and the customer, these permissions need to be added using the Partner Center API. L’exemple suivant montre comment accorder les autorisations.The following example shows how to grant the permissions.

    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.Uncomment the RunAzureTask and RunGraphTask function calls if you want to see how to interact with Azure Resource Manager and Microsoft Graph on behalf of the customer.