Add-KrForwardedHeader

SYNOPSIS

Adds Forwarded Headers middleware to a Kestrun server.

SYNTAX

Items (Default)

Add-KrForwardedHeader [-Server <KestrunHost>] [-XForwardedFor] [-XForwardedProto] [-XForwardedHost]
 [-XForwardedPrefix] [-All] [-ForwardLimit <Int32>] [-KnownNetworks <String[]>] [-KnownProxies <String[]>]
 [-ForwardedForHeaderName <String>] [-ForwardedProtoHeaderName <String>] [-ForwardedHostHeaderName <String>]
 [-ForwardedPrefixHeaderName <String>] [-OriginalForHeaderName <String>] [-OriginalProtoHeaderName <String>]
 [-OriginalHostHeaderName <String>] [-OriginalPrefixHeaderName <String>] [-RequireHeaderSymmetry] [-PassThru]
 [<CommonParameters>]

Options

Add-KrForwardedHeader [-Server <KestrunHost>] -Options <ForwardedHeadersOptions> [-PassThru]
 [<CommonParameters>]

DESCRIPTION

This cmdlet adds and configures the ASP.NET Core Forwarded Headers middleware for a Kestrun server. This middleware processes proxy-related headers such as X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Host, and X-Forwarded-Prefix to update the request’s Scheme, Host, and Remote IP address accordingly. This is essential when hosting behind reverse proxies or load balancers that modify these headers.

EXAMPLES

EXAMPLE 1

Add-KrForwardedHeader -XForwardedFor -XForwardedProto -KnownProxies $proxyIps
Adds Forwarded Headers middleware to the current Kestrun server, enabling
processing of X-Forwarded-For and X-Forwarded-Proto headers, and
trusting the specified proxy IP addresses.

PARAMETERS

-Server

The Kestrun server instance to which the Forwarded Headers middleware will be added. If not specified, the cmdlet will attempt to resolve the current server context.

Type: KestrunHost
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: True (ByValue)
Accept wildcard characters: False

-Options

An instance of Microsoft.AspNetCore.Builder.ForwardedHeadersOptions to configure the middleware. This allows for full customization of the middleware behavior.

Type: ForwardedHeadersOptions
Parameter Sets: Options
Aliases:

Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-XForwardedFor

Switch to enable processing of the X-Forwarded-For header.

Type: SwitchParameter
Parameter Sets: Items
Aliases:

Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False

-XForwardedProto

Switch to enable processing of the X-Forwarded-Proto header.

Type: SwitchParameter
Parameter Sets: Items
Aliases:

Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False

-XForwardedHost

Switch to enable processing of the X-Forwarded-Host header.

Type: SwitchParameter
Parameter Sets: Items
Aliases:

Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False

-XForwardedPrefix

Switch to enable processing of the X-Forwarded-Prefix header.

Type: SwitchParameter
Parameter Sets: Items
Aliases:

Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False

-All

Switch to enable processing of all supported forwarded headers.

Type: SwitchParameter
Parameter Sets: Items
Aliases:

Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False

-ForwardLimit

Specifies the maximum number of entries to read from the forwarded headers. Default is 1.

Type: Int32
Parameter Sets: Items
Aliases:

Required: False
Position: Named
Default value: 1
Accept pipeline input: False
Accept wildcard characters: False

-KnownNetworks

An array of IPNetwork objects representing known networks from which forwarded headers will be accepted.

Type: String[]
Parameter Sets: Items
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-KnownProxies

An array of IPAddress objects representing known proxy servers from which forwarded headers will be accepted.

Type: String[]
Parameter Sets: Items
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-ForwardedForHeaderName

Custom header name for X-Forwarded-For.

Type: String
Parameter Sets: Items
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-ForwardedProtoHeaderName

Custom header name for X-Forwarded-Proto.

Type: String
Parameter Sets: Items
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-ForwardedHostHeaderName

Custom header name for X-Forwarded-Host.

Type: String
Parameter Sets: Items
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-ForwardedPrefixHeaderName

Custom header name for X-Forwarded-Prefix.

Type: String
Parameter Sets: Items
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-OriginalForHeaderName

Custom header name for Original-For.

Type: String
Parameter Sets: Items
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-OriginalProtoHeaderName

Custom header name for Original-Proto.

Type: String
Parameter Sets: Items
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-OriginalHostHeaderName

Custom header name for Original-Host.

Type: String
Parameter Sets: Items
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-OriginalPrefixHeaderName

Custom header name for Original-Prefix.

Type: String
Parameter Sets: Items
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-RequireHeaderSymmetry

Switch to require that all enabled forwarded headers are present in the request.

Type: SwitchParameter
Parameter Sets: Items
Aliases:

Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False

-PassThru

If specified, the cmdlet returns the Kestrun server instance after adding the middleware.

Type: SwitchParameter
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False

CommonParameters

This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters.

INPUTS

OUTPUTS

Kestrun.Hosting.KestrunHost

NOTES

This cmdlet is part of the Kestrun PowerShell module.