Membuat skrip penginstalan tanpa pengawasan untuk konektor Proksi Aplikasi Azure Active Directory

Topik ini membantu Anda membuat skrip Windows PowerShell yang memungkinkan penginstalan tanpa pengawasan dan pendaftaran untuk konektor Proksi Aplikasi Azure AD Anda.

Kapabilitas ini berguna saat Anda ingin:

  • Menginstal konektor pada server Windows yang tidak mengaktifkan antarmuka pengguna, atau yang tidak dapat Anda akses dengan Desktop Jarak Jauh.
  • Menginstal dan mendaftarkan banyak konektor sekaligus.
  • Mengintegrasikan penginstalan konektor dan pendaftaran sebagai bagian dari prosedur lain.
  • Membuat citra server standar yang berisi bit konektor tetapi tidak terdaftar.

Agar konektor Proksi Aplikasi berfungsi, konektor tersebut harus didaftarkan ke direktori Azure AD Anda menggunakan administrator aplikasi dan kata sandi. Biasanya informasi ini dimasukkan selama penginstalan Konektor dalam kotak dialog pop-up, tetapi Anda bisa menggunakan PowerShell untuk mengotomatiskan proses ini.

Ada dua langkah untuk penginstalan tanpa pengawasan. Pertama, instal konektor. Kedua, daftarkan konektor dengan Azure AD.

Penting

Jika Anda menginstal konektor untuk cloud Azure Government, tinjau prasyarat dan langkah-langkah penginstalan. Ini memerlukan izin akses ke sekumpulan URL yang berbeda dan parameter tambahan untuk menjalankan instalasi.

Pasang konektor

Gunakan langkah-langkah berikut untuk menginstal konektor tanpa mendaftarkannya:

  1. Buka prompt perintah.

  2. Jalankan perintah berikut, dengan /q berarti penginstalan diam. Instalasi yang tenang tidak meminta Anda untuk menerima Perjanjian Lisensi Pengguna Akhir.

    AADApplicationProxyConnectorInstaller.exe REGISTERCONNECTOR="false" /q
    

Mendaftarkan konektor dengan Azure AD

Ada dua metode yang dapat Anda gunakan untuk mendaftarkan konektor:

  • Mendaftarkan konektor menggunakan objek kredensial Windows PowerShell
  • Mendaftarkan konektor menggunakan token yang dibuat secara offline

Mendaftarkan konektor menggunakan objek kredensial Windows PowerShell

  1. Buat objek Kredensial Windows PowerShell $cred yang berisi nama pengguna dan kata sandi administratif untuk direktori Anda. Jalankan perintah berikut, dengan mengganti <username> dan <password> :

    $User = "<username>"
    $PlainPassword = '<password>'
    $SecurePassword = $PlainPassword | ConvertTo-SecureString -AsPlainText -Force
    $cred = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $User, $SecurePassword
    
  2. Buka C:\Program Files\Microsoft AAD App Proxy Connector dan jalankan skrip berikut menggunakan objek $cred yang Anda buat:

    .\RegisterConnector.ps1 -modulePath "C:\Program Files\Microsoft AAD App Proxy Connector\Modules\" -moduleName "AppProxyPSModule" -Authenticationmode Credentials -Usercredentials $cred -Feature ApplicationProxy
    

Mendaftarkan konektor menggunakan token yang dibuat secara offline

  1. Buat token offline menggunakan kelas AuthenticationContext menggunakan nilai dalam cuplikan kode ini atau cmdlet PowerShell di bawah ini:

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

    Menggunakan 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. Setelah Anda memiliki token, buat SecureString menggunakan token:

    $SecureToken = $Token | ConvertTo-SecureString -AsPlainText -Force
    
  3. Jalankan perintah Windows PowerShell berikut ini, mengganti <tenant GUID> dengan ID direktori Anda:

    .\RegisterConnector.ps1 -modulePath "C:\Program Files\Microsoft AAD App Proxy Connector\Modules\" -moduleName "AppProxyPSModule" -Authenticationmode Token -Token $SecureToken -TenantId <tenant GUID> -Feature ApplicationProxy
    

Langkah berikutnya