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 :
Ouvrez une invite de commandes.
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
Inscription du connecteur à l’aide d’un jeton créé hors connexion.
Inscription du connecteur à l’aide d’un jeton créé hors connexion
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 :
# Loading DLLs Find-PackageProvider -Name NuGet| Install-PackageProvider -Force Register-PackageSource -Name nuget.org -Location https://www.nuget.org/api/v2 -ProviderName NuGet Install-Package Microsoft.IdentityModel.Abstractions -ProviderName Nuget -RequiredVersion 6.22.0.0 Install-Module Microsoft.Identity.Client add-type -path "C:\Program Files\PackageManagement\NuGet\Packages\Microsoft.IdentityModel.Abstractions.6.22.0\lib\net461\Microsoft.IdentityModel.Abstractions.dll" add-type -path "C:\Program Files\WindowsPowerShell\Modules\Microsoft.Identity.Client\4.53.0\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." }
Une fois que vous disposez du jeton, créez une chaîne
SecureString
en utilisant le jeton :$SecureToken = $Token | ConvertTo-SecureString -AsPlainText -Force
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
Stockez le script ou le code dans un emplacement sécurisé, car il contient des informations d’identification sensibles.