Partilhar via


Criar um script de instalação autônoma para o conector de rede privada do Microsoft Entra

Este artigo ajuda você a criar um script do Windows PowerShell que permite a instalação autônoma e o registro para o conector de rede privada do Microsoft Entra.

A instalação autônoma é útil quando você deseja:

  • Instale o conector em servidores Windows que não tenham a interface do usuário habilitada ou que você não possa acessar com a Área de Trabalho Remota.
  • Instale e registre muitos conectores de uma só vez.
  • Integre a instalação e o registro do conector como parte de outro procedimento.
  • Crie uma imagem de servidor padrão que contenha os bits do conector, mas não esteja registrada.

Para que o conector de rede privada funcione, você deve registrá-lo com o Microsoft Entra ID. O registro é feito na interface do usuário quando você instala o conector, mas você pode usar o PowerShell para automatizar o processo.

Há duas etapas para uma instalação autônoma. Primeiro, instale o conector. Em segundo lugar, registre o conector com o Microsoft Entra ID.

Importante

Se estiver a instalar o conector para a nuvem do Microsoft Azure Government, reveja os pré-requisitos e os passos de instalação. A nuvem do Microsoft Azure Government requer a habilitação do acesso a um conjunto diferente de URLs e um parâmetro adicional para executar a instalação.

Instale o conector

Use as seguintes etapas para instalar o conector sem registrá-lo:

  1. Abra uma linha de comandos.

  2. Execute o seguinte comando, o /q sinalizador significa instalação silenciosa. Uma instalação silenciosa não solicita que você aceite o Contrato de Licença de Usuário Final.

    MicrosoftEntraPrivateNetworkConnectorInstaller.exe REGISTERCONNECTOR="false" /q
    

Registrar o conector com o Microsoft Entra ID

Registre o conector usando um token criado offline.

Registrar o conector usando um token criado offline

  1. Crie um token offline usando a AuthenticationContext classe usando os valores neste trecho de código ou cmdlets do PowerShell:

    Usando 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;
       }
    }
    

    Através do 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."
    
    } 
    
  2. Depois de ter o token, crie um SecureString usando o token:

    $SecureToken = $Token | ConvertTo-SecureString -AsPlainText -Force
    
  3. Execute o seguinte comando do Windows PowerShell, substituindo <tenant GUID> pela ID do diretório:

    .\RegisterConnector.ps1 -modulePath "C:\Program Files\Microsoft Entra private network connector\Modules\" -moduleName "MicrosoftEntraPrivateNetworkConnectorPSModule" -Authenticationmode Token -Token $SecureToken -TenantId <tenant GUID> -Feature ApplicationProxy
    
  4. Armazene o script ou código em um local seguro, pois ele contém informações confidenciais de credenciais.

Próximos passos