Aracılığıyla paylaş


Microsoft Entra özel ağ bağlayıcısı için katılımsız yükleme betiği oluşturma

Bu makale, Microsoft Entra özel ağ bağlayıcınız için katılımsız yükleme ve kayıt sağlayan bir Windows PowerShell betiği oluşturmanıza yardımcı olur.

Katılımsız yükleme, aşağıdaki durumlarda kullanışlıdır:

  • Bağlayıcıyı, kullanıcı arabirimi etkinleştirilmemiş veya Uzak Masaüstü ile erişemezseniz Windows sunucularına yükleyin.
  • Aynı anda birçok bağlayıcı yükleyin ve kaydedin.
  • Bağlayıcı yüklemesini ve kaydını başka bir yordamın parçası olarak tümleştirin.
  • Bağlayıcı bitlerini içeren ancak kaydedilmemiş standart bir sunucu görüntüsü oluşturun.

Özel ağ bağlayıcısının çalışması için Bunu Microsoft Entra Id ile kaydetmeniz gerekir. Bağlayıcıyı yüklediğinizde kayıt kullanıcı arabiriminde yapılır, ancak işlemi otomatikleştirmek için PowerShell'i kullanabilirsiniz.

Katılımsız yükleme için iki adım vardır. İlk olarak bağlayıcıyı yükleyin. İkincisi, bağlayıcıyı Microsoft Entra ID ile kaydedin.

Önemli

Microsoft Azure Kamu bulutu için bağlayıcıyı yüklüyorsanız önkoşulları ve yükleme adımlarını gözden geçirin. Microsoft Azure Kamu bulutu, yüklemeyi çalıştırmak için farklı bir URL kümesine ve ek bir parametreye erişimi etkinleştirmeyi gerektirir.

Bağlayıcıyı yükleme

Bağlayıcıyı kaydetmeden yüklemek için aşağıdaki adımları kullanın:

  1. Komut istemi açın.

  2. Aşağıdaki komutu çalıştırın, /q bayrağı sessiz yükleme anlamına gelir. Sessiz bir yükleme, Son Kullanıcı Lisans Sözleşmesi'ni kabul etmek isteyip istemediğinizi sormaz.

    MicrosoftEntraPrivateNetworkConnectorInstaller.exe REGISTERCONNECTOR="false" /q
    

Bağlayıcıyı Microsoft Entra Id ile kaydetme

Bağlayıcıyı kaydetmek için kullanabileceğiniz iki yöntem vardır:

  • Bağlayıcıyı bir Windows PowerShell kimlik bilgisi nesnesi kullanarak kaydedin.
  • Çevrimdışı oluşturulan bir belirteci kullanarak bağlayıcıyı kaydedin.

Windows PowerShell kimlik bilgisi nesnesi kullanarak bağlayıcıyı kaydetme

  1. Dizininiz için yönetici kullanıcı adı ve parola içeren bir Windows PowerShell Kimlik Bilgileri nesnesi $cred oluşturun. , ve <tenantid>öğesini değiştirerek <username><password>aşağıdaki komutu çalıştırın:

    $User = "<username>"
    $PlainPassword = '<password>'
    $TenantId = '<tenantid>'
    $SecurePassword = $PlainPassword | ConvertTo-SecureString -AsPlainText -Force
    $cred = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $User, $SecurePassword
    
  2. C:\Program Files\Microsoft Entra private network connector Oluşturduğunuz nesneyi kullanarak $cred adresine gidin ve aşağıdaki betiği çalıştırın:

    .\RegisterConnector.ps1 -modulePath "C:\Program Files\Microsoft Entra private network connector\Modules\" -moduleName "MicrosoftEntraPrivateNetworkConnectorPSModule" -Authenticationmode Credentials -Usercredentials $cred -Feature ApplicationProxy -TenantId $TenantId
    
  3. Betik hassas kimlik bilgileri içerir. Betiği güvenli bir konumda depolayın.

Çevrimdışı oluşturulan bir belirteci kullanarak bağlayıcıyı kaydetme

  1. Bu kod parçacığındaki veya PowerShell cmdlet'lerindeki değerleri kullanarak sınıfını kullanarak AuthenticationContext çevrimdışı belirteç oluşturun:

    C# kullanarak:

    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 = "00001111-aaaa-2222-bbbb-3333cccc4444";
    
       /// <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;
       }
    }
    

    PowerShell’i kullanarak:

    # 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 = "00001111-aaaa-2222-bbbb-3333cccc4444";
    
    #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. Belirteci aldıktan sonra belirteci kullanarak bir SecureString oluşturun:

    $SecureToken = $Token | ConvertTo-SecureString -AsPlainText -Force
    
  3. öğesini dizin kimliğiniz ile değiştirerek <tenant GUID> aşağıdaki Windows PowerShell komutunu çalıştırın:

    .\RegisterConnector.ps1 -modulePath "C:\Program Files\Microsoft Entra private network connector\Modules\" -moduleName "MicrosoftEntraPrivateNetworkConnectorPSModule" -Authenticationmode Token -Token $SecureToken -TenantId <tenant GUID> -Feature ApplicationProxy
    
  4. Betiği veya kodu hassas kimlik bilgileri içerdiğinden güvenli bir konumda depolayın.

Sonraki adımlar