Erstellen eines Skripts für die unbeaufsichtigte Installation des privaten Microsoft Entra-Netzwerkconnectors

Dieser Artikel hilft Ihnen beim Erstellen eines Windows PowerShell-Skripts, das die unbeaufsichtigte Installation und Registrierung für Ihren privaten Microsoft Entra-Netzwerkconnector ermöglicht.

Die unbeaufsichtigte Installation ist nützlich, wenn Sie:

  • Installieren des Connectors auf Windows-Servern, auf denen keine Benutzeroberfläche aktiviert ist oder auf die nicht per Remotedesktop zugegriffen werden kann.
  • Gleichzeitiges Installieren und Registrieren vieler Connectors.
  • Integrieren der Connectorinstallation und Registrierung als Teil einer anderen Prozedur.
  • Erstellen eines standardmäßigen Serverimages, das die Connectorbits enthält, aber nicht registriert ist.

Damit der private Netzwerkconnector funktioniert, müssen Sie ihn bei Microsoft Entra ID registrieren. Die Registrierung erfolgt auf der Benutzeroberfläche, wenn Sie den Connector installieren, aber Sie können PowerShell verwenden, um den Prozess zu automatisieren.

Eine unbeaufsichtigte Installation umfasst zwei Schritte. Erstens: Die Installation des Connectors. Registrieren Sie den Connector anschließend mit Microsoft Entra ID.

Wichtig

Wenn Sie den Connector für die Microsoft Azure Government-Cloud installieren, überprüfen Sie die Voraussetzungen und Installationsschritte. Die Microsoft Azure Government-Cloud erfordert zum Ausführen der Installation den Zugriff auf einen anderen Satz von URLs und einen zusätzlichen Parameter.

Installieren des Connectors

Gehen Sie wie folgt vor, um den Connector zu installieren, ohne ihn zu registrieren:

  1. Öffnen Sie eine Eingabeaufforderung.

  2. Führen Sie den folgenden Befehl aus. /q-Flag steht hierbei für die automatische Installation. Bei einer automatischen Installation werden Sie nicht zum Akzeptieren der Lizenzbedingungen aufgefordert.

    MicrosoftEntraPrivateNetworkConnectorInstaller.exe REGISTERCONNECTOR="false" /q
    

Registrieren Sie den Connector mit Microsoft Entra ID

Es gibt zwei Methoden zum Registrieren des Connectors:

  • Registrieren Sie den Connector mit einem Windows PowerShell-Anmeldeinformationsobjekt.
  • Registrieren Sie den Connector mithilfe eines offline erstellten Tokens.

Registrieren des Connectors mit einem Windows PowerShell-Anmeldeinformationsobjekt

  1. Erstellen Sie ein Windows PowerShell-Anmeldeinformationsobjekt ($cred) mit einem Administratorbenutzernamen und einem Kennwort für Ihr Verzeichnis. Führen Sie den folgenden Befehl aus, wobei Sie <username>, <password> und <tenantid> ersetzen:

    $User = "<username>"
    $PlainPassword = '<password>'
    $TenantId = '<tenantid>'
    $SecurePassword = $PlainPassword | ConvertTo-SecureString -AsPlainText -Force
    $cred = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $User, $SecurePassword
    
  2. Wechseln Sie zu C:\Program Files\Microsoft Entra private network connector und führen Sie das folgende Skript unter Verwendung des zuvor erstellten Objekts $cred aus:

    .\RegisterConnector.ps1 -modulePath "C:\Program Files\Microsoft Entra private network connector\Modules\" -moduleName "MicrosoftEntraPrivateNetworkConnectorPSModule" -Authenticationmode Credentials -Usercredentials $cred -Feature ApplicationProxy -TenantId $TenantId
    
  3. Das Skript enthält vertrauliche Anmeldeinformationen. Speichern Sie das Skript an einem sicheren Speicherort.

Registrieren des Connectors mithilfe eines offline erstellten Tokens

  1. Erstellen Sie mithilfe der AuthenticationContext-Klasse ein Offlinetoken unter Verwendung der Werte in diesem Codeausschnitt bzw. in den PowerShell-Cmdlets:

    Mithilfe von 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;
       }
    }
    

    Mithilfe von 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. Sobald das Token vorliegt, erstellen Sie SecureString mit diesem Token:

    $SecureToken = $Token | ConvertTo-SecureString -AsPlainText -Force
    
  3. Führen Sie folgenden Windows PowerShell-Befehl aus, und ersetzen Sie <tenant GUID> dabei durch die ID Ihres Verzeichnisses:

    .\RegisterConnector.ps1 -modulePath "C:\Program Files\Microsoft Entra private network connector\Modules\" -moduleName "MicrosoftEntraPrivateNetworkConnectorPSModule" -Authenticationmode Token -Token $SecureToken -TenantId <tenant GUID> -Feature ApplicationProxy
    
  4. Speichern Sie das Skript oder den Code an einem sicheren Speicherort, da es vertrauliche Anmeldeinformationen enthält.

Nächste Schritte