組織によっては、アクセスに認証を必要とする非公開のパッケージレジストリで、所有するパッケージをホストしている場合があります。このような組織の従業員やユーザーの場合、npm 認証を使用してスコープ付きレジストリを設定する必要があります。設定を行うには、npm 認証トークンを取得し、そのトークンをユーザー設定ファイルに追加します。
npm の認証トークンを作成してアクセスする手順は、レジストリプロバイダーごとに異なります。例えば、JFrog の Artifactory リポジトリマネージャは、npm からの認証トークン生成に、別の手順を使用します。これは典型的な手順の一例ですが、スコープ付きレジストリの場合は、特定のパッケージレジストリプロバイダが推奨する手順に従う必要があります。
認証トークンを npm から取得するには、以下を行います。
npm をローカルコンピュータにインストールします。
端末から以下のコマンドを入力して、レジストリにログインします。
$ npm login --registry <registry url>
生成された .npmrc ファイルを見つけて開きます。
_authToken または _auth エントリーのいずれかを見つけて、その値をコピーします (以下の例を参照)。
レジストリ次第で、トークン文字列は、グローバルに一意の識別子 (GUID)、トークン、独自形式の文字列のいずれかとなります。
これは、_authToken 属性を含む .npmrc ファイルの例です。
registry=https://example.com:1234/mylocation/
//example.com:1234/mylocation/:_authToken=<AUTH TOKEN>
これは、_auth 属性を含む .npmrc ファイルの例です。
registry=https://example.com:1234/mylocation
_auth=<AUTH TOKEN>
email=<EMAIL>
always-auth=true
認証が必要な各スコープ付きレジストリのトークン情報を、npmAuth 設定スキーマを使用して、.upmconfig.toml ユーザー設定ファイルに格納します。この情報を設定ファイルに保存した後に、Package Manager によって、ファイルの各レジストリに対するすべてのリクエストに、認証情報を提供します。
以下の手順で、認証情報をユーザーコンフィギュレーションファイルに加えます。
.upmconfig.toml ユーザー設定ファイルを見つけます。ファイルが存在しない場合は、空のテキストファイルを作成します。
スキーマを使って、Bearer (トークンベース) と Basic (Base64 で暗号化) のどちらの認証メカニズムを使用しているかに応じて、認証情報をフォーマットします。
[npmAuth."<REGISTRY URL>"]
<TOKEN-PROPERTY> = "<TOKEN-VALUE>"
email = "<EMAIL>"
alwaysAuth = <BOOLEAN>
以下の表には、設定ファイルの値を指定する方法について示してあります。
| エントリー | 説明 |
|---|---|
[npmAuth."<REGISTRY-URL>"] |
必須: レジストリの URL。例えば [npmAuth."https://example.com:8081/mylocation"]。 |
<TOKEN-PROPERTY> = "<TOKEN-VALUE>" |
必須: npm レジストリから生成された認証トークン。GUID、トークン、独自形式の文字列のいずれかです。例えば、token = "<AUTH TOKEN>" (Bearer) または _auth = "<BASE64 TOKEN>" (Basic) のいずれかになります。 |
| 任意: レジストリに登録されているユーザーの E メールアドレスと一致する、ユーザーの E メールアドレス。 | |
| alwaysAuth | 任意: パッケージのメタデータと tarballs が同じサーバーにない場合、true に設定します。通常は、生成した .npmrc ファイルから値をコピーできます。 |
[npmAuth."http://localhost:8081/myrepository/mylocation"]
token = "NpmToken.2348c7ea-6f86-3dbe-86b6-f257e86569a8"
alwaysAuth = true
[npmAuth."http://localhost:4873"]
token = "eaJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyZWFsX2dyb3VwcyI6WyJwYXNjYWxsIl0sIm5hbWUiOiJwYXNjYWxsIiwiZ3JvdXBzIjpbIn"
[npmAuth."https://api.bintray.example/npm/mycompany/myregistry"]
token = "aGFzY2FsbDo4ZWIwNTM5NzBjNTI3OTIwYjQ4MDVkYzY2YWEzNmQxOTkyNDYzZjky"
email = "username@example.com"
alwaysAuth = true
これらのステップでは、例として Azure DevOps を使用しますが、このプロセスは個人アクセストークン (PAT) を使用するすべてのプラットフォームで類似しています。
始める前に、Node.js がまだインストールされていない場合はインストールします。
Azure DevOps PAT (個人アクセストークン) を取得し、次のステップに備えます。PAT を再生成する必要がある場合は、Azure DevOps (https://dev.azure.com) にログインし、User settings > Personal access tokens の順に選択します。PAT の使用の詳細については、Microsoft の個人用アクセス トークンを使用するという記事を参照してください。
コマンドラインから、以下のコマンドを実行します。
node -e "require('readline').createInterface({input:process.stdin,output:process.stdout,historySize:0}).question('Enter PAT> ',p => {b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit();})"
Enter PAT プロンプトで email:PAT と入力し、以下のように置き換えます。
email と、.upmconfig.toml ファイルで指定された E メールPAT
コマンドは Base64 で暗号化された文字列を返します。その文字列をコピーし、.upmconfig.toml ファイルにある _auth キーの値として割り当てます。
[npmAuth."http://localhost:8081/myrepository/mylocation"]
_auth = "c19kaW5pcm9AaG90bWFpbC4jb206d3FzdzVhemU9Q=="
email = "username@example.com"
alwaysAuth = true