Azure Proxy — Connector VM¶
The Application Proxy connector is a Windows service (WAPCSvc and
WAPCUpdaterSvc) that maintains an outbound HTTPS tunnel to Azure and
forwards requests to the internal Peek server. The connector runs on a
Windows VM inside the corporate network — no inbound firewall rule is
required.
VM Requirements¶
Windows Server 2019 or newer, 2 vCPU, 4 GB RAM.
Outbound HTTPS (443) to
*.msappproxy.net,login.microsoftonline.com,login.windows.net,*.servicebus.windows.net. See Microsoft’s published list for the full set.Internal network access to the Peek backend (HTTPS + WebSocket).
Time synchronised (Windows Time service running).
Install the Connector¶
Download the installer on the VM:
Invoke-WebRequest ` -Uri "https://download.msappproxy.net/Subscription/<tenant-id>/Connector/DownloadConnectorInstaller" ` -OutFile "$env:TEMP\AADApplicationProxyConnectorInstaller.exe"(Or download from the Entra portal: Applications -> Enterprise applications -> Application proxy -> Download connector service.)
Run the installer silently:
Start-Process ` -FilePath "$env:TEMP\AADApplicationProxyConnectorInstaller.exe" ` -ArgumentList "/q","/norestart" ` -WaitConfirm the services exist (they will start disabled):
Get-Service -Name 'WAPCSvc','WAPCUpdaterSvc' | Format-Table Name,Status,StartType
Register the Connector¶
Registration binds the connector to your tenant. The supplied
RegisterConnector.ps1 does not accept modern auth by default — use token
mode:
Acquire a connector-registration token (device code flow). Scope is
https://proxy.cloudwebappproxy.net/registerapp/user_impersonation.Convert the access token to a
SecureString:$token = ConvertTo-SecureString "<access-token>" -AsPlainText -Force
Run the registration script (installed with the connector):
& "C:\Program Files\Microsoft Entra private network connector\RegisterConnector.ps1" ` -AuthenticationMode Token ` -Token $token ` -TenantId "<tenant-id>" ` -Modulepath "C:\Program Files\Microsoft Entra private network connector\Modules\"Successful registration writes the connector ID and subscription ID to
Event Viewer -> Applications and Services Logs -> Microsoft -> AadApplicationProxy -> Connector -> Admin.Set both services to Automatic and start them:
Set-Service -Name 'WAPCSvc','WAPCUpdaterSvc' -StartupType Automatic Start-Service -Name 'WAPCSvc','WAPCUpdaterSvc'
In the Entra portal, go to Applications -> Enterprise applications -> Application proxy -> Connectors. The new connector appears in the
Defaultgroup. CreatePeekConnectorGroup(+ New connector group) and move the connector into it.
Internal URL Hostname Workaround¶
Application Proxy rejects raw IP addresses for the internal URL
(InternalUrl_ContainsIP). If the internal Peek server has no DNS
record, add a hosts file entry on the connector VM:
Add-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" `
-Value "10.46.2.126 azure-peek-nzor1pek6.synerty.com"
Then use the synthetic hostname (e.g.
https://azure-peek-nzor1pek6.synerty.com) as the Application Proxy
Internal URL.
If the Peek backend uses a certificate whose SAN does not include the
synthetic hostname, enable Translate URLs in Headers -> Yes on the
Application Proxy settings so the connector rewrites Host: to match.
Health Checks¶
On the VM:
# Service status
Get-Service -Name 'WAPCSvc','WAPCUpdaterSvc'
# Outbound connectivity
Test-NetConnection -ComputerName "<tenant>.msappproxy.net" -Port 443
# Recent registration / health events
Get-WinEvent -LogName 'Microsoft-AadApplicationProxy-Connector/Admin' `
-MaxEvents 20 | Format-List TimeCreated,Id,Message
From Entra portal:
Applications -> Enterprise applications -> Application proxy -> Connectors — the connector must show Active.
Assign the connector group to each Application Proxy app (Azure Proxy — App Setup). An application with no connector returns 502 from the external URL.