2 votes

Docker avec dotnet restore provoque une erreur : l'opération GSSAPI a échoué - un mécanisme non pris en charge a été demandé

Avec une application web ASP.NET Core 2.2, j'essaie de restaurer les packages NuGet derrière un proxy d'entreprise

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS sdk-image
WORKDIR /app/
ARG HTTP_PROXY
ENV HTTP_PROXY ${HTTP_PROXY}
ENV HTTPS_PROXY ${HTTP_PROXY}
COPY MyProject.csproj .

RUN dotnet restore

avec le docker-compose.yml suivant :

version: '2'
services:
  tool:
    build:
      context: .
      args:
        http_proxy: ${HTTP_PROXY}
networks:
  default:
    ipam:
      driver: default
      config:
        - subnet: 192.168.239.0/21

Le réseau a été remplacé car le réseau par défaut de Docker entre en conflit avec les plages internes de l'entreprise. HTTP_PROXY est défini sur l'hôte en tant qu'URL complète comme http://user:password@proxy.internal:81.

Lors de l'exécution de docker-compose up --build ça échoue sur la restauration :

Step 7/15 : RUN dotnet restore
 ---> Running in 62c8bb6f2f72
/usr/share/dotnet/sdk/2.2.402/NuGet.targets(123,5): error : Impossible de charger l'index de service pour la source https://api.nuget.org/v3/index.json. [/app/MyProject.csproj]
/usr/share/dotnet/sdk/2.2.402/NuGet.targets(123,5): error :   L'opération GSSAPI a échoué avec l'erreur - Un mécanisme non pris en charge a été demandé (Erreur inconnue). [/app/MyProject.csproj]
ERROR: Service 'tool' failed to build: The command '/bin/sh -c dotnet restore' returned a non-zero code: 1

Je n'ai pas trouvé beaucoup d'informations sur ce problème. Un problème Github a rencontré cela à travers leur TFS local. Mais je n'ai pas de référentiel auto-hébergé, juste le proxy d'entreprise entre moi et le serveur NuGet.

2voto

Lion Points 2833

Il semble que cela se produit lorsque le proxy nécessite NTLM, mais que la bibliothèque correspondante est manquante. J'ai rencontré ce problème derrière un proxy d'entreprise et je l'ai résolu en installant le package gss-ntlmssp de cette manière dans Docker :

RUN apt-get install -y gss-ntlmssp

Après l'installation de ce package, l'authentification au proxy pour récupérer les packages NuGet fonctionne bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X