PowerShell / PowerShell/PowerShell-Docker

Proxy authentication from Ubuntu 24.04. fails for Install-PSResource with error code 407

Aperta
#847 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Dockerfile
Stelle
449
Fork
158
Merge medio
3g 10h
PR unite (30g)
1

Descrizione

Prerequisites
  • Write a descriptive title.
  • Make sure you are able to repro it on the latest image.
  • Search the existing issues.
  • Verified that this is not a Known Issue
  • Verified this is not an issues in the underlying windows container that should be reported to Windows Feedback Hub
Steps to reproduce

Under powershell:preview-ubuntu-24.04, we cannot get NTLM authentication with our HTTP(S) proxy to work. Therefore, we cannot install PowerShell modules. We supply the proxy credentials via en environment variable (which seems to be picked up).

docker run -e ALL_PROXY="http://<username>:<pw>@<proxyfqdn>:8080" --rm --name pwsh -it mcr.microsoft.com/powershell:preview-ubuntu-24.04

I believe we are hitting https://github.com/dotnet/runtime/issues/100231. Our Wireshark capture shows a first CONNECT to the proxy to be initiated without authentication. A second CONNECT is initiated with a Proxy-Authorization header, but that still returns 407.

The Ubuntu 22.04 and Alpine 3.20 images behave differently, there the second CONNECT message is not send at all. I believe these hit NTLM authentication not working in Linux based environment · Issue #101058 · dotnet/runtime instead.

Proxy authentication under Windows works.

Expected behavior
Az Module is installed.
Actual behavior
PS /> [System.Net.Http.HttpClient]::DefaultProxy

Credentials
-----------
System.Net.Http.HttpEnvironmentProxyCredentials

PS /> Install-PSResource -Name Az -Scope CurrentUser

Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its Trusted value by running the Set-PSResourceRepository cmdlet. Are you sure you want to install the
PSResource from 'PSGallery'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): A
Install-PSResource: 'The proxy tunnel request to proxy 'http://<user>:<pw>@<proxyfqdn>:8080/' failed with status code '407'."' Request sent: 'https://www.powershellgallery.com/api/v2/FindPackagesById()?%24filter=Id+eq+%27Az%27+and+IsLatestVersion+eq+true&%24inlinecount=allpages&id=%27Az%27'
Install-PSResource: Package(s) 'Az' could not be installed from repository 'PSGallery'.
Error details
PS /> Get-Error

Exception             :
    Type    : Microsoft.PowerShell.PSResourceGet.UtilClasses.ResourceNotFoundException
    Message : Package(s) 'Az' could not be installed from repository 'PSGallery'.
    HResult : -2146233088
TargetObject          : Microsoft.PowerShell.PSResourceGet.Cmdlets.InstallPSResource
CategoryInfo          : InvalidData: (Microsoft.PowerShel…s.InstallPSResource:InstallPSResource) [Install-PSResource], ResourceNotFoundException
FullyQualifiedErrorId : InstallPackageFailure,Microsoft.PowerShell.PSResourceGet.Cmdlets.InstallPSResource
InvocationInfo        :
    MyCommand        : Install-PSResource
    ScriptLineNumber : 1
    OffsetInLine     : 1
    HistoryId        : 3
    Line             : Install-PSResource -Name Az -Scope CurrentUser
    Statement        : Install-PSResource -Name Az -Scope CurrentUser
    PositionMessage  : At line:1 char:1
                       + Install-PSResource -Name Az -Scope CurrentUser
                       + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    InvocationName   : Install-PSResource
    CommandOrigin    : Internal
ScriptStackTrace      : at <ScriptBlock>, <No file>: line 1
PipelineIterationInfo :
      0
      1
Environment data
{
        "schemaVersion": 2,
        "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
        "config": {
                "mediaType": "application/vnd.docker.container.image.v1+json",
                "size": 5572,
                "digest": "sha256:ca17b51e4e0fbd04c97c1a6ee9109a505c425f63a8c9ca1b80a6c908035a74c5"
        },
        "layers": [
                {
                        "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
                        "size": 29751968,
                        "digest": "sha256:de44b265507ae44b212defcb50694d666f136b35c1090d9709068bc861bb2d64"
                },
                {
                        "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
                        "size": 103040902,
                        "digest": "sha256:94058be39bdeb7bdadb5c92c6d989191e021a35d7d7a24d27f5fbe1cce3439d6"
                }
        ]
}
Visuals

No response

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia riproducendo il comando docker run con la variabile d’ambiente del proxy sull’immagine preview-ubuntu-24.04, quindi confrontalo con le immagini Ubuntu 22.04 e Alpine 3.20. Analizza il comportamento del proxy NTLM descritto nelle issue collegate di dotnet/runtime; il lavoro è completato quando Install-PSResource -Name Az ha esito positivo attraverso il proxy autenticato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
docker, powershell, ubuntu
Ambito
authentication, infrastructure, networking
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
28/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.