From ca4b6162f49aff1b89fa624a2e059794c740b6cb Mon Sep 17 00:00:00 2001 From: CarloToso <105941898+CarloToso@users.noreply.github.com> Date: Thu, 12 Jan 2023 13:08:28 +0100 Subject: [PATCH] Add AllowInsecureRedirect switch to Web cmdlets (#18546) --- .../WebCmdlet/Common/WebRequestPSCmdlet.Common.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs index 79362e5c5d..e265feae33 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs +++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs @@ -198,6 +198,12 @@ namespace Microsoft.PowerShell.Commands [Parameter] public virtual SecureString Token { get; set; } + /// + /// Gets or sets the AllowInsecureRedirect property used to follow HTTP redirects from HTTPS. + /// + [Parameter] + public virtual SwitchParameter AllowInsecureRedirect { get; set; } + #endregion #region Headers @@ -951,7 +957,7 @@ namespace Microsoft.PowerShell.Commands } // This indicates GetResponse will handle redirects. - if (handleRedirect) + if (handleRedirect || AllowInsecureRedirect) { handler.AllowAutoRedirect = false; } @@ -1276,7 +1282,7 @@ namespace Microsoft.PowerShell.Commands _cancelToken = new CancellationTokenSource(); response = client.SendAsync(req, HttpCompletionOption.ResponseHeadersRead, _cancelToken.Token).GetAwaiter().GetResult(); - if (keepAuthorization && IsRedirectCode(response.StatusCode) && response.Headers.Location is not null) + if ((keepAuthorization || (AllowInsecureRedirect && (WebSession.MaximumRedirection > 0 || WebSession.MaximumRedirection == -1))) && IsRedirectCode(response.StatusCode) && response.Headers.Location != null) { _cancelToken.Cancel(); _cancelToken = null;