Add-Web Application Proxy Application

Publishes a web application through Web Application Proxy.

Syntax

Add-WebApplicationProxyApplication
   [-Name] <String>
   [-ExternalPreauthentication <String>]
   [-ClientCertificateAuthenticationBindingMode <String>]
   [-BackendServerCertificateValidation <String>]
   -ExternalUrl <String>
   [-ExternalCertificateThumbprint <String>]
   [-EnableSignOut]
   [-InactiveTransactionsTimeoutSec <UInt32>]
   [-ClientCertificatePreauthenticationThumbprint <String>]
   [-EnableHTTPRedirect]
   [-ADFSUserCertificateStore <String>]
   [-DisableHttpOnlyCookieProtection]
   [-PersistentAccessCookieExpirationTimeSec <UInt32>]
   -BackendServerUrl <String>
   [-DisableTranslateUrlInRequestHeaders]
   [-DisableTranslateUrlInResponseHeaders]
   [-BackendServerAuthenticationSPN <String>]
   [-ADFSRelyingPartyName <String>]
   [-UseOAuthAuthentication]
   [-CimSession <CimSession[]>]
   [-ThrottleLimit <Int32>]
   [-AsJob]
   [<CommonParameters>]

Description

The Add-WebApplicationProxyApplication cmdlet publishes a web application through Web Application Proxy. Use this cmdlet to specify a name for the web application, and to provide an external address and the address of the backend server. External clients connect to the external address to access the web application hosted by the backend server. The cmdlet checks the external address to verify that no other published web application uses it on any of the proxies in the current Active Directory Federation Services (AD FS) installation.

You can specify the relying party for use with AD FS, the service principal name (SPN) of the backend server, a certificate thumbprint for the external address, the method of preauthentication, and whether the proxy provides the URL of the federation server to users of Open Authorization (OAuth). You can also specify whether the application proxy validates the certificate from the backend server and verifies whether the certificate that authenticates the federation server authenticates future requests.

The proxy can translate URLs in headers. You can disable translation in either request or response headers, or both.

You can also specify a time-out value for inactive connections.

This cmdlet supports passing multiple WebApplicationProxyApplication objects through the pipeline.

Examples

Example 1: Publish a web application

PS C:\> Add-WebApplicationProxyApplication -Name "Contoso App" -ExternalPreauthentication ADFS -ExternalUrl https://ContosoApp.Contoso.com/ -ExternalCertificateThumbprint "69DF0AB8434060DC869D37BBAEF770ED5DD0C32A" -BackendServerUrl http://ContosoApp:8080/ -ADFSRelyingPartyName "ContosoAppRP"

This command publishes a web application that specifies the value of AD FS for the ExternalPreauthentication parameter.

Example 2: Publish a web application that omits external preauthentication

PS C:\> Add-WebApplicationProxyApplication -Name "ContosoApp" -BackendServerUrl http://ContosoApp/ -ExternalUrl https://ContosoApp.Contoso.com/ -ExternalPreauthentication "PassThrough" -ExternalCertificateThumbprint "D1A657E1A4F276FCC45613C0F6B3BC91AFC4633F"

This command publishes a web application named ContosoApp. The command specifies a backend server URL and an external URL. The application uses pass-through preauthentication.

Example 3: Publish an Exchange Active Sync application

PS C:\>Add-WebApplicationProxyApplication -BackendServerAuthenticationSPN 'HTTP/EXCH1.contoso.com' -BackendServerUrl 'https://extmail.contoso.com/Microsoft-Server-ActiveSync/' -ExternalCertificateThumbprint '27A3F96517C27443207BBFE94FA65E1B154170BB' -EnableHTTPRedirect -ExternalUrl 'https://extmail.contoso.com/Microsoft-Server-ActiveSync/' -Name 'ActiveSync' -ExternalPreAuthentication ADFSforRichClients -ADFSRelyingPartyName 'ActiveSync' -ADFSUserCertificateStore 'Root'

This command publishes an Exchange Active Sync application. The application uses Integrated Windows Authentication with (IWA) Kerberos Constrained Delegation (KCD).

Required Parameters

-BackendServerUrl

Specifies the backend address of the web application. Specify by protocol and host name or IP address. Include the trailing slash (/). You can also include a port number and path. The following examples show the form of an address:

Type: String
Aliases: BackendUrl
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-ExternalUrl

Specifies the external address, as a URL, for the web application. Include the trailing slash (/).

Type: String
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-Name

Specifies a friendly name for the published web application.

Type: String
Aliases: FriendlyName
Position: 0
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False

Optional Parameters

-ADFSRelyingPartyName

Specifies the name of the relying party configured on the AD FS federation server.

Type: String
Aliases: RPName
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-ADFSUserCertificateStore

Specifies the certificate store for a AD FS user.

Type: String
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-AsJob

Runs the cmdlet as a background job. Use this parameter to run commands that take a long time to complete.

Type: SwitchParameter
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-BackendServerAuthenticationSPN

Specifies the service principal name (SPN) of the backend server. Use this parameter if the application that the backend server hosts uses Integrated Windows authentication.

Type: String
Aliases: SPN
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-BackendServerCertificateValidation

Specifies whether Web Application Proxy validates the certificate that the backend server presents with the WAP configuration per application. The acceptable values for this parameter are:

  • None
  • ValidateCertificate
Type: String
Parameter Sets: None, ValidateCertificate
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-CimSession

Runs the cmdlet in a remote session or on a remote computer. Enter a computer name or a session object, such as the output of a New-CimSession or Get-CimSession cmdlet. The default is the current session on the local computer.

Type: CimSession[]
Aliases: Session
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-ClientCertificateAuthenticationBindingMode

If this parameter is set to ValidateCertificate then the browser sends a certificate with each request and validates that the device certificate thumbprint from the certificate is included in the token or the cookie. The acceptable values for this parameter are:

  • None
  • ValidateCertificate
Type: String
Parameter Sets: None, ValidateCertificate
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-ClientCertificatePreauthenticationThumbprint

Specifies the certificate thumbprint, as a string, of the certificate that a client supplies for the preauthentication feature. The thumbprint is 40 hexadecimal characters. This parameter is only relevant when you specify the value of ClientCertificate for the ExternalPreauthentication parameter.

Type: String
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-DisableHttpOnlyCookieProtection

Indicates that this cmdlet disables the use of the HttpOnly flag when Web Application Proxy sets the access cookie. The access cookie provides single sign-on access to an application.

Important: by default, HttpOnly is enabled to help ensure network protection. If you disable HttpOnly flag protection, the browser may share this cookie with other components on the client device, such as ActiveX, Java Applets and JavaScript, so they can access this application without the need to perform additional preauthentication.

Type: SwitchParameter
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-DisableTranslateUrlInRequestHeaders

Indicates that Web Application Proxy does not translate HTTP host headers from public host headers to internal host headers when it forwards the request to the published application.

Specify this parameter if the application uses path-based information.

Type: SwitchParameter
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-DisableTranslateUrlInResponseHeaders

Indicates that Web Application Proxy does not translate internal host names to public host names in Content-Location , Location , and Set-Cookie response headers in redirect responses.

If the proxy does not translate host names in the Content-Location or Location response headers, subsequent client requests resolve incorrectly. If the proxy does not translate the host name in the Set-Cookie response header, the published web application might not use cookies properly.

Type: SwitchParameter
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-EnableHTTPRedirect

Indicates that this cmdlet enables HTTP redirect for Web Application Proxy.

Type: SwitchParameter
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-EnableSignOut

Indicates whether to enable sign out for Web Application Proxy.

Type: SwitchParameter
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-ExternalCertificateThumbprint

Specifies the certificate thumbprint, as a string, of the certificate to use for the address specified by the ExternalUrl parameter. The thumbprint is 40 hexadecimal characters.

The certificate must exist in the Local Computer or Local Personal certificate store. You can use a simple certificate, a subject alternative name (SAN) certificate, or a wildcard certificate.

Type: String
Aliases: ExternalCert
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-ExternalPreauthentication

Specifies the preauthentication method that Web Application Proxy uses. The acceptable values for this parameter are:

  • ADFS
  • ClientCertificate
  • PassThrough
  • ADFSforRichClients
  • ADFSforOAuth
  • ADFSforBrowsersAndOffice
Type: String
Aliases: PreAuthN
Parameter Sets: PassThrough, ADFS, ClientCertificate, ADFSforRichClients, ADFSforOAuth, ADFSforBrowsersAndOffice
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-InactiveTransactionsTimeoutSec

Specifies the length of time, in seconds, until Web Application Proxy closes incomplete HTTP transactions.

Type: UInt32
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-PersistentAccessCookieExpirationTimeSec

Specifies the expiration time, in seconds, for persistent access cookies.

Type: UInt32
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-ThrottleLimit

Specifies the maximum number of concurrent operations that can be established to run the cmdlet. If this parameter is omitted or a value of 0 is entered, then Windows PowerShell® calculates an optimum throttle limit for the cmdlet based on the number of CIM cmdlets that are running on the computer. The throttle limit applies only to the current cmdlet, not to the session or to the computer. Do not specify a value for this parameter greater than 1.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-UseOAuthAuthentication

Indicates that Web Application Proxy provides the URL of the federation server that performs Open Authorization (OAuth) when users connect to the application by using a Windows Store app.

Type: SwitchParameter
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False