Salta al contenuto principale
Versione: Successivo

Autenticazione

L'autenticazione è legata al plugin di autenticazione che si sta utilizzando. Anche le restrizioni di pacchetto sono gestite dall'Accesso al Pacchetto.

L'autenticazione del client viene gestita dal npm client stesso. Una volta che si effettua il login all'applicazione:

npm adduser --registry http://localhost:4873

Un token viene generato nel file di configurazione npm ospitato nella cartella home dell'utente. Per ulteriori informazioni su .npmrc leggere la documentazione ufficiale.

cat .npmrc
registry=http://localhost:5555/
//localhost:5555/:_authToken="secretVerdaccioToken"
//registry.npmjs.org/:_authToken=secretNpmjsToken

Pubblicazione anonima

verdaccio ti consente di abilitare la pubblicazione anonima. verdaccio permette di attivare la pubblicazione anonima, per riuscirci sarà necessario impostare correttamente l'accesso ai pacchetti.

Ad esempio:

'my-company-*':
access: $anonymous
publish: $anonymous
proxy: npmjs

Come è descritto nel caso #212 fino al npm@5.3.0 e in tutte le versioni minori **non vi sarà permesso pubblicare senza un token **.

Comprensione dei Gruppi

Il significato di $all e $anonymous

Come è noto, Verdaccio utilizza di default htpasswd. Quel plugin non implementa i metodi allow_access, allow_publish e allow_unpublish. Dunque, Verdaccio lo gestirà nel seguente modo:

  • Se non si è loggati (si è anonimi), $all e $anonymous significano esattamente la stessa cosa.
  • Se si è loggati, $anonymous non sarà parte dei tuoi gruppi e $all coinciderà con ogni utente loggato. Un nuovo gruppo $authenticated verrà aggiunto all'elenco.

Il concetto chiave è che $all ** coinciderà con tutti gli utenti, indipendentemente dal fatto che siano loggati o meno**.

Il comportamento precedente si applica esclusivamente al plugin di autenticazione predefinito. Se si sta utilizzando un plugin personalizzato e tale plugin implementa allow_access, allow_publish o allow_unpublish, la risoluzione dell'accesso dipende dal plugin stesso. Verdaccio imposterà esclusivamente i gruppi predefiniti.

Ricapitolando:

  • acceduti: $all e $authenticated, + gruppi aggiunti dal plugin.
  • disconnessi (anonimi): $all e $anonymous.

Impostazione predefinita htpasswd

Per semplificare la configurazione, verdaccio utilizza un plugin basato su htpasswd. A partire dalla versione v3.0.x il plugin verdaccio-htpasswd viene utilizzato di default.

auth:
htpasswd:
file: ./htpasswd
# Numero massimo di utenti autorizzati a registrarsi, da quelli predefiniti a "+inf".
# È possibile impostarlo su -1 per disabilitare la registrazione.
# max_users: 1000
# Algoritmo di hash, sono opzioni possibili: "bcrypt", "md5", "sha1", "crypt".
algorithm: bcrypt # di default è crypt, ma è consigliato usare bcrypt per le nuove installazioni
# Arrotonda il numero per "bcrypt", sarà ignorato per gli altri algoritmi.
rounds: 10

L'algoritmo predefinito è crypt, considerato non sicuro per gli ambienti di produzione, è invece consigliato usare bcrypt per le nuove installazioni. Nota che dopo Verdaccio 6.x il valore predefinito sarà bcrypt.

ProprietàTipoRichiestoEsempioSupportoDescrizione
filestringa. / htpasswdtuttifile che ospita le credenziali crittografate
max_usersnumeroNo1000tuttiimposta limite di utenti
algoritmostringaNobcrypt/md5/sha1/crypt>=5.13.0imposta l'algoritmo di hashing della password
arrotondanumeroNo10>=5.13.0Arrotonda il numero per "bcrypt", sarà ignorato per gli altri algoritmi

Nel caso tu decida di impedire agli utenti di accedere, puoi impostare max_users: -1.