16
votes

«Impossible de s'authentifier» lors de la tentative de connexion au flux d'artefacts Azure DevOps via npm; J'obtiens une erreur E401

J'essaie de me connecter à un flux d'artefacts Azure DevOps, mais j'obtiens toujours une erreur E401.

J'ai essayé sur un autre ordinateur et il s'est connecté très bien. J'ai désinstallé et réinstallé mon Node.js et j'ai toujours l'erreur.

Vous trouverez ci-dessous l'erreur que j'obtiens lorsque j'exécute 'npm install'

registry=https://[org].pkgs.visualstudio.com/_packaging/[feed].Npm/npm/registry
//pkgs.dev.azure.com/[org]/_packaging/[feed].Npm/npm/registry/:_authToken=[token]
//pkgs.dev.azure.com/[org]/_packaging/[feed].Npm/npm/:_authToken=[token]

Voici ce qui a été ajouté au fichier .npmrc

npm ERR! code E401
npm ERR! Unable to authenticate, need: Bearer authorization_uri=https://login.windows.net/*********, Basic realm="https://pkgsprodcus1.pkgs.visualstudio.com/", TFS-Federated

Je m'attendais à être connecté au flux après avoir ajouté mes informations au fichier .npmrc et exécuté 'npm install'


0 commentaires

5 Réponses :


9
votes

Lorsque Microsoft a mis à jour le nom de VSTS en Azure DevOps, ils ont également modifié de nombreuses URL. La plupart des anciens redirigent encore, mais il semble que votre fichier .npmrc ci-dessus ne correspond pas. Modifiez l'URI de la première ligne pour qu'elle corresponde aux autres lignes, cela ressemble à ceci:

registry=https://pkgs.dev.azure.com/[org]/_packaging/[feed].Npm/npm/registry

Cela devrait vous débloquer.

En guise de note, si vous avez à la fois le Registre et vos informations d'identification dans le même fichier et que ce fichier est validé dans le contrôle de code source, vous enregistrez également vos informations d'identification dans le contrôle de code source. Les meilleures pratiques ici est de garder .npmrc dans votre racine qui a seulement la première ligne du projet, celui qui dit NPM qui registre pour se connecter. Ensuite, créez un nouveau fichier à ~/.npmrc (si vous utilisez Windows, vous pouvez utiliser git bash pour l'aider à le mettre au bon endroit) et ajoutez simplement les deux autres lignes, celles avec vos informations d'identification. Cela gardera vos creds locaux sur votre machine et le fichier avec la note de registre pourra être validé en toute sécurité.

N'oubliez pas non plus que les informations d'identification que vous générez à partir du registre de packages Azure sont valables pendant 90 jours au maximum, de sorte qu'à un moment donné, vous obtiendrez à nouveau le message d'erreur non autorisé et vous devrez mettre à jour les informations d'identification dans votre fichier ~/.npmrc . .


1 commentaires

travaillé. et votre réponse est plus informative!



8
votes

Cela se produit généralement lorsque vous avez récemment modifié votre mot de passe. Pour résoudre ce problème, j'ai exécuté cette commande dans le terminal Powershell de VS Code (n'importe quel terminal fonctionnera)

vsts-npm-auth -config .npmrc

Ce faisant, une interface graphique est apparue dans laquelle j'ai pu sélectionner le compte que je voulais utiliser pour m'authentifier.

J'espère que ça aide!


0 commentaires

1
votes

https://docs.microsoft.com/en-us/azure/devops/artifacts/npm/npmrc?view=azure-devops&tabs=windows Cette solution fonctionne pour moi. Il existe différentes extensions PowerShell qui doivent être installées avant d'exécuter la commande vsts-npm-auth -config .npmrc .


0 commentaires

2
votes

Je viens de faire l'expérience de ce problème avec le portail Azure DevOps:

Un de mes collègues n'a pas pu se connecter. Il s'est avéré que le portail Azure DevOps insérait le texte %40Local après le nom du flux si vous copiez l'URL du flux dans le navigateur, comme je l'ai fait lors du partage sur MS Teams.

Ce que mon portail a montré:

; begin auth token
//pkgs.dev.azure.com/<company>/_packaging/<feed>%40Local/npm/registry/:username=xxx
//pkgs.dev.azure.com/<company>/_packaging/<feed>%40Local/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<company>/_packaging/<feed>%40Local/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<company>/_packaging/<feed>%40Local/npm/:username=xxx
//pkgs.dev.azure.com/<company>/_packaging/<feed>%40Local/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<company>/_packaging/<feed>%40Local/npm/:email=npm requires email to be set but doesn't use the value
; end auth token

Ce que son portail a montré:

; begin auth token
//pkgs.dev.azure.com/<company>/_packaging/<feed>/npm/registry/:username=xxx
//pkgs.dev.azure.com/<company>/_packaging/<feed>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<company>/_packaging/<feed>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<company>/_packaging/<feed>/npm/:username=xxx
//pkgs.dev.azure.com/<company>/_packaging/<feed>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<company>/_packaging/<feed>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token

Cela a provoqué une incompatibilité avec l'URL du référentiel dans les projets .npmrc

Pour résoudre ce problème: assurez-vous que l'URL est correcte et correspond à la fois à l'utilisateur .npmrc et au projet .npmrc


0 commentaires

0
votes

J'ai eu un problème où je ne pouvais pas me connecter, même si j'avais le même .npmrc que les autres dépôts sur la même machine. L'exécution de vsts-npm-auth -config .npmrc vient de se vsts-npm-auth -config .npmrc , probablement satisfait des informations d'identification mises en cache.

Cependant, les informations d'identification qu'il avait semblé être mauvaises. La solution consistait à forcer l'actualisation du jeton: vsts-npm-auth -config .npmrc -force


0 commentaires