Créer un script d’installation sans assistance pour le connecteur de réseau privé Microsoft Entra

Cet article vous aide à créer un script Windows PowerShell qui permet l’installation et l’inscription sans assistance de votre connecteur de réseau privé Microsoft Entra.

L’installation sans assistance est utile lorsque vous souhaitez :

  • Installer le connecteur sur des serveurs Windows sur lesquels aucune interface utilisateur n’est activée ou auxquels vous ne pouvez pas accéder avec le Bureau à distance
  • Installer et inscrire beaucoup de connecteurs à la fois.
  • Intégrer l’installation et l’inscription du connecteur dans le cadre d’une autre procédure.
  • Créer une image de serveur standard qui contient les exécutables du connecteur, mais qui n’est pas inscrite.

Pour que le connecteur de réseau privé fonctionne, vous devez l'enregistrer avec Microsoft Entra ID. L’inscription s’effectue dans l’interface utilisateur lorsque vous installez le connecteur, mais vous pouvez utiliser PowerShell pour automatiser le processus.

Une installation sans assistance comporte deux étapes. Tout d’abord, vous devez installer le connecteur. Ensuite, inscrivez le connecteur dans Microsoft Entra ID.

Important

Si vous installez le connecteur pour le cloud Microsoft Azure Government, suivez les prérequis et les étapes d’installation. Le cloud Microsoft Azure Government nécessite l’activation de l’accès à un autre ensemble d’URL et un paramètre supplémentaire pour exécuter l’installation.

Installation du connecteur

Effectuez les étapes suivantes pour installer le connecteur sans l’inscrire :

  1. Ouvrez une invite de commandes.

  2. Exécutez la commande suivante. L’indicateur /q signifie « installation silencieuse ». Une installation silencieuse ne vous invite pas à accepter le Contrat de Licence Utilisateur Final.

    MicrosoftEntraPrivateNetworkConnectorInstaller.exe REGISTERCONNECTOR="false" /q
    

Inscrire le connecteur dans Microsoft Entra ID

Deux méthodes permettent d’inscrire le connecteur :

  • Inscription du connecteur à l’aide d’un objet d’informations d’identification Windows PowerShell.
  • Inscription du connecteur à l’aide d’un jeton créé hors connexion.

Inscription du connecteur à l’aide d’un objet d’informations d’identification Windows PowerShell

  1. Créez un objet d’informations d’identification Windows PowerShell $cred qui contient un nom d’utilisateur et un mot de passe d’administration pour votre annuaire. Exécutez la commande suivante, en remplaçant <username>, <password> et <tenantid> :

    $User = "<username>"
    $PlainPassword = '<password>'
    $TenantId = '<tenantid>'
    $SecurePassword = $PlainPassword | ConvertTo-SecureString -AsPlainText -Force
    $cred = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $User, $SecurePassword
    
  2. Accédez à C:\Program Files\Microsoft Entra private network connector et exécutez le script suivant en utilisant l’objet $cred que vous avez créé :

    .\RegisterConnector.ps1 -modulePath "C:\Program Files\Microsoft Entra private network connector\Modules\" -moduleName "MicrosoftEntraPrivateNetworkConnectorPSModule" -Authenticationmode Credentials -Usercredentials $cred -Feature ApplicationProxy -TenantId $TenantId
    
  3. Le script contient des informations d’identification sensibles. Stockez le script dans un emplacement sécurisé.

Inscription du connecteur à l’aide d’un jeton créé hors connexion

  1. Créez un jeton hors connexion à l’aide de la classe AuthenticationContext en utilisant les valeurs de cet extrait de code ou des applets de commande PowerShell :

    Utilisation de C# :

    using System;
    using System.Linq;
    using System.Collections.Generic;
    using Microsoft.Identity.Client;
    
    class Program
    {
       #region constants
       /// <summary>
       /// The AAD authentication endpoint uri
       /// </summary>
       static readonly string AadAuthenticationEndpoint = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize";
    
       /// <summary>
       /// The application ID of the connector in AAD
       /// </summary>
       static readonly string ConnectorAppId = "55747057-9b5d-4bd4-b387-abf52a8bd489";
    
       /// <summary>
       /// The AppIdUri of the registration service in AAD
       /// </summary>
       static readonly string RegistrationServiceAppIdUri = "https://proxy.cloudwebappproxy.net/registerapp/user_impersonation";
    
       #endregion
    
       #region private members
       private string token;
       private string tenantID;
       #endregion
    
       public void GetAuthenticationToken()
       {
          IPublicClientApplication clientApp = PublicClientApplicationBuilder
             .Create(ConnectorAppId)
             .WithDefaultRedirectUri() // will automatically use the default Uri for native app
             .WithAuthority(AadAuthenticationEndpoint)
             .Build();
    
          AuthenticationResult authResult = null;
    
          IAccount account = null;
    
          IEnumerable<string> scopes = new string[] { RegistrationServiceAppIdUri };
    
          try
          {
          authResult = await clientApp.AcquireTokenSilent(scopes, account).ExecuteAsync();
          }
          catch (MsalUiRequiredException ex)
          {
          authResult = await clientApp.AcquireTokenInteractive(scopes).ExecuteAsync();
          }
    
          if (authResult == null || string.IsNullOrEmpty(authResult.AccessToken) || string.IsNullOrEmpty(authResult.TenantId))
          {
          Trace.TraceError("Authentication result, token or tenant id returned are null");
          throw new InvalidOperationException("Authentication result, token or tenant id returned are null");
          }
    
          token = authResult.AccessToken;
          tenantID = authResult.TenantId;
       }
    }
    

    Utilisation de PowerShell :

    # Load MSAL (Tested with version 4.7.1) 
    
    Add-Type -Path "..\MSAL\Microsoft.Identity.Client.dll"
    
    # The AAD authentication endpoint uri
    
    $authority = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize"
    
    #The application ID of the connector in AAD
    
    $connectorAppId = "55747057-9b5d-4bd4-b387-abf52a8bd489";
    
    #The AppIdUri of the registration service in AAD
    $registrationServiceAppIdUri = "https://proxy.cloudwebappproxy.net/registerapp/user_impersonation"
    
    # Define the resources and scopes you want to call
    
    $scopes = New-Object System.Collections.ObjectModel.Collection["string"] 
    
    $scopes.Add($registrationServiceAppIdUri)
    
    $app = [Microsoft.Identity.Client.PublicClientApplicationBuilder]::Create($connectorAppId).WithAuthority($authority).WithDefaultRedirectUri().Build()
    
    [Microsoft.Identity.Client.IAccount] $account = $null
    
    # Acquiring the token
    
    $authResult = $null
    
    $authResult = $app.AcquireTokenInteractive($scopes).WithAccount($account).ExecuteAsync().ConfigureAwait($false).GetAwaiter().GetResult()
    
    # Check AuthN result
    If (($authResult) -and ($authResult.AccessToken) -and ($authResult.TenantId)) {
    
       $token = $authResult.AccessToken
       $tenantId = $authResult.TenantId
    
       Write-Output "Success: Authentication result returned."
    }
    Else {
    
       Write-Output "Error: Authentication result, token or tenant id returned with null."
    
    } 
    
  2. Une fois que vous disposez du jeton, créez une chaîne SecureString en utilisant le jeton :

    $SecureToken = $Token | ConvertTo-SecureString -AsPlainText -Force
    
  3. Exécuter la commande Windows PowerShell suivante, en remplaçant <tenant GUID> par votre ID de répertoire :

    .\RegisterConnector.ps1 -modulePath "C:\Program Files\Microsoft Entra private network connector\Modules\" -moduleName "MicrosoftEntraPrivateNetworkConnectorPSModule" -Authenticationmode Token -Token $SecureToken -TenantId <tenant GUID> -Feature ApplicationProxy
    
  4. Stockez le script ou le code dans un emplacement sécurisé, car il contient des informations d’identification sensibles.

Étapes suivantes