Как аутентифицировать npm с помощью артефактов Azure DevOps Server 2019, используя базовую аутентификацию IIS

#npm #azure-devops #basic-authentication #iis-8 #azure-artifacts

#npm #azure-devops #базовая аутентификация #iis-8 #azure-артефакты

Вопрос:

У нас есть локальный Azure DevOps Server 2019, размещенный на виртуальной машине центра обработки данных Windows Server 2012 R2 и IIS 8.5 с включенной базовой проверкой подлинности. Мы используем упаковку и каналы Azure Artifacts для публикации наших пакетов NuGet и для этого используем проверку подлинности Windows (разработчики используют свое имя пользователя и пароли домена Active Directory). Теперь я пытаюсь настроить использование каналов для npm.

Я создал новый проект npm, используя npm init , открыл содержащую папку в VS Code и создал файл .npmrc, как мне также сообщили Azure Artifacts, затем попытался установить пакет из вышестоящего пакета. Но я получаю следующую ошибку:

 
0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli   'C:\Program Files\nodejs\node.exe',
1 verbose cli   'C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js',
1 verbose cli   'install',
1 verbose cli   'sass-node'
1 verbose cli ]
2 info using npm@6.10.2
3 info using node@v12.9.0
4 verbose npm-session cfab4705708e8227
5 silly install loadCurrentTree
6 silly install readLocalPackageData
7 http fetch GET 401 http://(redacted domain name):8080/tfs/PAP Projects/_packaging/pap-front-end/npm/registry/sass-node 52ms
8 silly fetchPackageMetaData error for sass-node@latest Unable to authenticate, need: Bearer, Basic realm="http://(redacted local domain name):8080/tfs", Negotiate, NTLM
9 timing stage:rollbackFailedOptional Completed in 0ms
10 timing stage:runTopLevelLifecycles Completed in 99ms
11 verbose stack Error: Unable to authenticate, need: Bearer, Basic realm="http://(redacted local domain name):8080/tfs", Negotiate, NTLM
11 verbose stack     at C:Program Filesnodejsnode_modulesnpmnode_modulesnpm-registry-fetchcheck-response.js:94:17
11 verbose stack     at processTicksAndRejections (internal/process/task_queues.js:85:5)
12 verbose statusCode 401
13 verbose pkgid sass-node@latest
14 verbose cwd C:Usersa.taravaticodenpm-test
15 verbose Windows_NT 10.0.17763
16 verbose argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "install" "sass-node"
17 verbose node v12.9.0
18 verbose npm  v6.10.2
19 error code E401
20 error Unable to authenticate, your authentication token seems to be invalid.
21 error To correct this please trying logging in again with:
21 error     npm login
22 verbose exit [ 1, true ]


 

Я специально не редактировал некоторые части на случай, если с ними возникнет проблема. Примечательно, что я искал в Интернете и нашел несколько вопросов и ответов, особенно в stackoverflow, и они были близки к моей проблеме, но ответы были мне бесполезны. В целом, я получил следующие советы:

  • Когда включена базовая аутентификация, вы не можете использовать PAT
  • Вы должны закодировать пароль Windows с помощью Base64, а затем ввести его .npmrc вместе с именем пользователя.

Я пробовал их, но все равно безуспешно. Я также не уверен в следующем:

  • Должен ли я использовать только username domainusername или username@domain использовать форматы или?
  • Должен ли я ввести строку моего пароля в кодировке Base64 .npmrc ?
  • Есть ли проблема с URL-адресом? Домен? Протокол? имя коллекции или имя канала?
  • Возможно ли, что до тех пор, пока мы сохраняем базовую аутентификацию включенной, не будет никакой возможности настроить это?

Кроме того, всякий раз, когда я пытаюсь использовать npm login его, запрашивается имя пользователя, пароль и адрес электронной почты, но затем возвращается ошибка 400.