npm-granular-access-token (#33)

Monish C Mohan committed Dec 6, 2022 at 13:19 UTC 2c510df24ca9966f9a010da93f9bfe94d64d0d5e
13 files changed +229 -60
content/cli/v7/commands/npm-token.md
+35 -13
@@ -20,17 +20,41 @@ redirect_from:
20 ---
21
22 ### Synopsis
23 +
24 +<!-- AUTOGENERATED USAGE DESCRIPTIONS START -->
25 +<!-- automatically generated, do not edit manually -->
26 +<!-- see lib/commands/token.js -->
27 +
28 ```bash
29 npm token list [--json|--parseable]
30 npm token create [--read-only] [--cidr=1.1.1.1/24,2.2.2.2/16]
31 npm token revoke <id|token>
32 ```
33
29 -Note: This command is unaware of workspaces.
34 +<!-- automatically generated, do not edit manually -->
35 +<!-- see lib/commands/token.js -->
36 +
37 +<!-- AUTOGENERATED USAGE DESCRIPTIONS END -->
38 +
39 +<Note>
40 +
41 +**Note:** This command is unaware of workspaces.
42 +
43 +</Note>
44
45 ### Description
46
33 -This lets you list, create and revoke authentication tokens.
47 +This command lets you:
48 +
49 +* List all authentication tokens
50 +* Revoke any authentication token
51 +* Generate personal access tokens
52 +
53 +<Note>
54 +
55 +**Note:** To generate granular access tokens, you must use the website. For more information, see "[Creating and viewing access tokens](https://docs.npmjs.com/creating-and-viewing-access-tokens)."
56 +
57 +</Note>
58
59 * `npm token list`:
60 Shows a table of all active authentication tokens. You can request
@@ -64,10 +88,8 @@ This lets you list, create and revoke authentication tokens.
88 your password, and, if you have two-factor authentication enabled, an
89 otp.
90
67 - Currently, the cli can not generate automation tokens. Please refer to
68 - the [docs
69 - website](https://docs.npmjs.com/creating-and-viewing-access-tokens)
70 - for more information on generating automation tokens.
91 + The CLI cannot generate automation tokens or granular access tokens. For more information on generating tokens, see "[Creating and viewing access tokens](https://docs.npmjs.com/creating-and-viewing-access-tokens)."
92 + .
93
94 ```bash
95 +----------------+--------------------------------------+
@@ -144,10 +166,10 @@ password, npm will prompt on the command line for one.
166
167 ### See Also
168
147 -* [npm adduser](/cli/v7/commands/npm-adduser)
148 -* [npm registry](/cli/v7/using-npm/registry)
149 -* [npm config](/cli/v7/commands/npm-config)
150 -* [npmrc](/cli/v7/configuring-npm/npmrc)
151 -* [npm owner](/cli/v7/commands/npm-owner)
152 -* [npm whoami](/cli/v7/commands/npm-whoami)
153 -* [npm profile](/cli/v7/commands/npm-profile)
169 +* [npm adduser](/commands/npm-adduser)
170 +* [npm registry](/using-npm/registry)
171 +* [npm config](/commands/npm-config)
172 +* [npmrc](/configuring-npm/npmrc)
173 +* [npm owner](/commands/npm-owner)
174 +* [npm whoami](/commands/npm-whoami)
175 +* [npm profile](/commands/npm-profile)
content/cli/v8/commands/npm-token.md
+30 -13
@@ -27,11 +27,30 @@ npm token revoke <id|token>
27 npm token create [--read-only] [--cidr=list]
28 ```
29
30 -Note: This command is unaware of workspaces.
30 +<!-- automatically generated, do not edit manually -->
31 +<!-- see lib/commands/token.js -->
32 +
33 +<!-- AUTOGENERATED USAGE DESCRIPTIONS END -->
34 +
35 +<Note>
36 +
37 +**Note:** This command is unaware of workspaces.
38 +
39 +</Note>
40
41 ### Description
42
34 -This lets you list, create and revoke authentication tokens.
43 +This command lets you:
44 +
45 +* List all authentication tokens
46 +* Revoke any authentication token
47 +* Generate personal access tokens
48 +
49 +<Note>
50 +
51 +**Note:** To generate granular access tokens, you must use the website. For more information, see "[Creating and viewing access tokens](https://docs.npmjs.com/creating-and-viewing-access-tokens)."
52 +
53 +</Note>
54
55 * `npm token list`:
56 Shows a table of all active authentication tokens. You can request
@@ -65,10 +84,8 @@ This lets you list, create and revoke authentication tokens.
84 your password, and, if you have two-factor authentication enabled, an
85 otp.
86
68 - Currently, the cli can not generate automation tokens. Please refer to
69 - the [docs
70 - website](https://docs.npmjs.com/creating-and-viewing-access-tokens)
71 - for more information on generating automation tokens.
87 + The CLI cannot generate automation tokens or granular access tokens. For more information on generating tokens, see "[Creating and viewing access tokens](https://docs.npmjs.com/creating-and-viewing-access-tokens)."
88 + .
89
90 ```bash
91 +----------------+--------------------------------------+
@@ -128,10 +145,10 @@ password, npm will prompt on the command line for one.
145
146 ### See Also
147
131 -* [npm adduser](/cli/v8/commands/npm-adduser)
132 -* [npm registry](/cli/v8/using-npm/registry)
133 -* [npm config](/cli/v8/commands/npm-config)
134 -* [npmrc](/cli/v8/configuring-npm/npmrc)
135 -* [npm owner](/cli/v8/commands/npm-owner)
136 -* [npm whoami](/cli/v8/commands/npm-whoami)
137 -* [npm profile](/cli/v8/commands/npm-profile)
148 +* [npm adduser](/commands/npm-adduser)
149 +* [npm registry](/using-npm/registry)
150 +* [npm config](/commands/npm-config)
151 +* [npmrc](/configuring-npm/npmrc)
152 +* [npm owner](/commands/npm-owner)
153 +* [npm whoami](/commands/npm-whoami)
154 +* [npm profile](/commands/npm-profile)
content/cli/v9/commands/npm-token.md
+51 -13
@@ -37,17 +37,40 @@ redirect_from:
37
38 ### Synopsis
39
40 +<!-- AUTOGENERATED USAGE DESCRIPTIONS START -->
41 +<!-- automatically generated, do not edit manually -->
42 +<!-- see lib/commands/token.js -->
43 +
44 ```bash
45 npm token list
46 npm token revoke <id|token>
47 npm token create [--read-only] [--cidr=list]
48 ```
49
46 -Note: This command is unaware of workspaces.
50 +<!-- automatically generated, do not edit manually -->
51 +<!-- see lib/commands/token.js -->
52 +
53 +<!-- AUTOGENERATED USAGE DESCRIPTIONS END -->
54 +
55 +<Note>
56 +
57 +**Note:** This command is unaware of workspaces.
58 +
59 +</Note>
60
61 ### Description
62
50 -This lets you list, create and revoke authentication tokens.
63 +This command lets you:
64 +
65 +* List all authentication tokens
66 +* Revoke any authentication token
67 +* Generate legacy tokens
68 +
69 +<Note>
70 +
71 +**Note:** To generate granular access tokens, you must use the website. For more information, see "[Creating and viewing access tokens](https://docs.npmjs.com/creating-and-viewing-access-tokens)."
72 +
73 +</Note>
74
75 * `npm token list`:
76 Shows a table of all active authentication tokens. You can request
@@ -81,10 +104,8 @@ This lets you list, create and revoke authentication tokens.
104 your password, and, if you have two-factor authentication enabled, an
105 otp.
106
84 - Currently, the cli can not generate automation tokens. Please refer to
85 - the [docs
86 - website](https://docs.npmjs.com/creating-and-viewing-access-tokens)
87 - for more information on generating automation tokens.
107 + The CLI cannot generate automation tokens or granular access tokens. For more information on generating tokens, see "[Creating and viewing access tokens](https://docs.npmjs.com/creating-and-viewing-access-tokens)."
108 + .
109
110 ```bash
111 +----------------+--------------------------------------+
@@ -108,6 +129,9 @@ This lets you list, create and revoke authentication tokens.
129
130 ### Configuration
131
132 +<!-- AUTOGENERATED CONFIG DESCRIPTIONS START -->
133 +<!-- automatically generated, do not edit manually -->
134 +<!-- see lib/utils/config/definitions.js -->
135 #### `read-only`
136
137 * Default: false
@@ -116,6 +140,9 @@ This lets you list, create and revoke authentication tokens.
140 This is used to mark a token as unable to publish when configuring limited
141 access tokens with the `npm token create` command.
142
143 +<!-- automatically generated, do not edit manually -->
144 +<!-- see lib/utils/config/definitions.js -->
145 +
146 #### `cidr`
147
148 * Default: null
@@ -124,6 +151,9 @@ access tokens with the `npm token create` command.
151 This is a list of CIDR address to be used when configuring limited access
152 tokens with the `npm token create` command.
153
154 +<!-- automatically generated, do not edit manually -->
155 +<!-- see lib/utils/config/definitions.js -->
156 +
157 #### `registry`
158
159 * Default: "https://registry.npmjs.org/"
@@ -131,6 +161,9 @@ tokens with the `npm token create` command.
161
162 The base URL of the npm registry.
163
164 +<!-- automatically generated, do not edit manually -->
165 +<!-- see lib/utils/config/definitions.js -->
166 +
167 #### `otp`
168
169 * Default: null
@@ -142,12 +175,17 @@ when publishing or changing package permissions with `npm access`.
175 If not set, and a registry response fails with a challenge for a one-time
176 password, npm will prompt on the command line for one.
177
178 +<!-- automatically generated, do not edit manually -->
179 +<!-- see lib/utils/config/definitions.js -->
180 +
181 +<!-- AUTOGENERATED CONFIG DESCRIPTIONS END -->
182 +
183 ### See Also
184
147 -* [npm adduser](/cli/v9/commands/npm-adduser)
148 -* [npm registry](/cli/v9/using-npm/registry)
149 -* [npm config](/cli/v9/commands/npm-config)
150 -* [npmrc](/cli/v9/configuring-npm/npmrc)
151 -* [npm owner](/cli/v9/commands/npm-owner)
152 -* [npm whoami](/cli/v9/commands/npm-whoami)
153 -* [npm profile](/cli/v9/commands/npm-profile)
185 +* [npm adduser](/commands/npm-adduser)
186 +* [npm registry](/using-npm/registry)
187 +* [npm config](/commands/npm-config)
188 +* [npmrc](/configuring-npm/npmrc)
189 +* [npm owner](/commands/npm-owner)
190 +* [npm whoami](/commands/npm-whoami)
191 +* [npm profile](/commands/npm-profile)
content/integrations/integrating-npm-with-external-services/about-access-tokens.mdx
+35 -3
@@ -13,18 +13,50 @@ redirect_from:
13
14 An access token is an alternative to using your username and password for authenticating to npm when using the API or the npm command-line interface (CLI). An access token is a hexadecimal string that you can use to authenticate, and which gives you the right to install and/or publish your modules.
15
16 -The npm CLI automatically generates an access token for you when you run `npm login`. You can also create an access token to give other tools (such as continuous integration testing environments) access to your npm packages. For example, GitHub Actions provides the ability to store [secrets](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets), like access tokens, that you can then use to authenticate. When your workflow runs, it will be able to complete npm tasks as you, including installing private packages you can access.
16 +There are two types of access tokens available:
17 +
18 +* [Legacy tokens](#about-legacy-tokens)
19 +* [Granular access tokens](#about-granular-access-tokens)
20 +
21 +You can create access tokens to give other tools (such as continuous integration testing environments) access to your npm packages. For example, GitHub Actions provides the ability to store [secrets](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets), such as access tokens, that you can then use to authenticate. When your workflow runs, it will be able to complete npm tasks as you, including installing private packages you can access.
22
23 You can work with tokens from the web or the CLI, whichever is easiest. What you do in each environment will be reflected in the other environment.
24
25 npm token commands let you:
26
27 * View tokens for easier tracking and management
23 -* Create new tokens, specifying read-only or full-permission
28 +* Create new legacy tokens
29 * Limit access according to IP address ranges (CIDR)
30 * Delete/revoke tokens
31
32 For more information on creating and viewing access tokens on the web and CLI, see "[Creating and viewing access tokens][create-token]".
33
29 -[create-token]: creating-and-viewing-access-tokens
34 +## About legacy tokens
35 +
36 +Legacy tokens are created with the same permissions as the user who created them. The npm CLI automatically generates and uses a publish token when you run `npm login`.
37 +
38 +There are three different types of legacy tokens:
39 +
40 +
41 +* **Read-only**: You can use these tokens to download packages from the registry. These tokens are best for automation and workflows where you are installing packages. For greater security, we recommend using [granular access tokens](#about-granular-access-tokens) instead.
42 +* **Automation**: You can use these tokens to download packages and install new ones. These tokens are best for automation workflows where you are publishing new packages. Automation tokens do not 2FA for executing operations on npm and are suitable for CI/CD workflows. For greater security, we recommend using [granular access tokens](#about-granular-access-tokens) instead.
43 +* **Publish**: You can use these tokens to download packages, install packages, and update user and package settings. We recommend using them for interactive workflows such as a CLI. If 2FA is enabled on your account, publish tokens will require 2FA to execute sensitive operations on npm.
44
45 +Legacy tokens do not have an expiration date. It is important to be aware of your tokens and keep them protected for account security. For more information, see "[Securing your token][secure-token]."
46 +
47 +## About granular access tokens
48 +
49 +Granular access tokens allow you to restrict access provided to the token based on what you want to use the token for. With granular access tokens, you can:
50 +
51 +* Restrict which packages and scopes a token has access to
52 +* Grant tokens access to specific organizations
53 +* Set a token expiration date
54 +* Limit token access based on IP address ranges
55 +* Select between **read-only** or **read and write** access
56 +
57 +You can create up to 50 granular access tokens on your npm account. You can set how long your token is valid for, up to a maximum expiration of 365 days from creation. Each token can access up to 50 organizations, and up to either 50 packages, 50 scopes, or a combination of 50 packages and scopes. Access tokens are tied to users’ permission; hence it cannot have more permission than the user at any point in time. If a user has their access revoked from a package or an org., their granular access token also will have its access revoked from those packages or org.
58 +
59 +When you give a token access to an organization, the token can only be used for managing organization settings and teams or users associated with the organization. It does not give the token the right to publish packages managed by the organization.
60 +
61 +[create-token]: creating-and-viewing-access-tokens
62 +[secure-token]: using-private-packages-in-a-ci-cd-workflow#securing-your-token
content/integrations/integrating-npm-with-external-services/creating-and-viewing-access-tokens.mdx
+63 -7
@@ -7,25 +7,32 @@ You can [create](#creating-access-tokens) and [view](#viewing-access-tokens) acc
7
8 ## Creating access tokens
9
10 -### Creating tokens on the website
10 +### Creating legacy tokens on the website
11 +
12 +<Note>
13 +
14 +**Note:** For greater security, we recommend using [granular access tokens](#creating-granular-access-tokens-on-the-website) instead of legacy read-only tokens or legacy automation tokens.
15 +
16 +</Note>
17 +
18
19 1. In the upper right corner of the page, click your profile picture, then click **Access Tokens**.
20
21 <Screenshot src="/integrations/integrating-npm-with-external-services/tokens-profile.png" alt="Screenshot of the account menu with the tokens link selected" />
22
16 -2. Click **Generate New Token**.
23 +2. Click **Generate New Token**, then select **legacy token** from the dropdown menu.
24
25 <Screenshot src="/integrations/integrating-npm-with-external-services/create-token.png" alt="Screenshot of the create new token button" />
26
20 -3. (Optional) Name your token
27 +3. (Optional) Name your token.
28
29 4. Select the type of access token:
30
24 - - **Read-only**: a read-only token can only be used to download packages from the registry. It will have permission to read any private package that you have access to. This is recommended for automation and workflows where you are installing packages, but not publishing new ones.
31 + - **Read-only**: A read-only token can only be used to download packages from the registry. It will have permission to read any private package that you have access to. This is recommended for automation and workflows where you are installing packages, but not publishing new ones.
32
26 - - **Automation**: an automation token can download packages and publish new ones, but if you have two-factor authentication (2FA) configured on your account, it will **not** be enforced. You can use an automation token in continuous integration workflows and other automation systems to publish a package even when you cannot enter a one-time passcode. This is recommended for automation workflows where you are publishing new packages.
33 + - **Automation**: An automation token can download packages and publish new ones, but if you have two-factor authentication (2FA) configured on your account, it will **not** be enforced. You can use an automation token in continuous integration workflows and other automation systems to publish a package even when you cannot enter a one-time passcode.
34
28 - - **Publish**: a publish token can perform any action on your behalf, including downloading packages, publishing packages, and changing user settings or package settings. If you have two-factor authentication configured on your account, you will be required to enter a one-time passcode when using a publish token. This is recommended for interactive workflows.
35 + - **Publish**: A publish token can perform any action on your behalf, including downloading packages, publishing packages, and changing user settings or package settings. If you have two-factor authentication configured on your account, you will be required to enter a one-time passcode when using a publish token. This is recommended for interactive workflows such as a CLI.
36
37 <Screenshot src="/integrations/integrating-npm-with-external-services/token-level-select.png" alt="Screenshot of the access level selection" />
38
@@ -33,9 +40,58 @@ You can [create](#creating-access-tokens) and [view](#viewing-access-tokens) acc
40
41 6. Copy the token from the top of page.
42
43 +### Creating granular access tokens on the website
44 +
45 +1. In the upper right corner of the page, click your profile picture, then click **Access Tokens**.
46 +
47 + <Screenshot src="/integrations/integrating-npm-with-external-services/tokens-profile.png" alt="Screenshot of the account menu with the tokens link selected" />
48 +
49 +2. Click **Generate New Token**, then click **Granular Access Token**.
50 +
51 + <Screenshot src="/integrations/integrating-npm-with-external-services/create-token.png" alt="Screenshot of the create new token button" />
52 +
53 +3. In the **Token name** field, enter a name for your token.
54 +
55 +4. (Optional) In the **Description** field, enter a description for your token.
56 +
57 +5. In the **Expiration** field, enter a token expiration period. This must be between 1 and 365 days.
58 +
59 +6. (Optional) In the **Allowed IP Ranges** field, enter IP address ranges to restrict your access token to. You must use [CIDR][cidr-wiki] notation to enter IP address ranges. To add more than one allowed IP range, click **Add IP Range** and enter an IP range in the new text field.
60 +
61 + <Screenshot src="/integrations/integrating-npm-with-external-services/granular-access-token-ip-range.png" alt="Screenshot of the allowed IP ranges section" />
62 +
63 +7. (Optional) In the **Packages and scopes** section, configure your token's access to packages and scopes.
64 +
65 + - In the **Permissions** dropdown menu, select **No access**, **Read-only**, or **Read and write**.
66 + - Under **Select Packages**, select either:
67 + - **All Packages** to grant the token access to all packages the user account has access to.
68 + - **Only select packages and scopes** to choose up to 50 specific packages or scopes to give the token access to. Then select specific packages or scopes from the dropdown menu.
69 +
70 + <Screenshot src="/integrations/integrating-npm-with-external-services/granular-access-token-packages-scopes.png" alt="Screenshot of the packages and scopes section" />
71 +
72 +8. (Optional) In the **Organizations** section, configure your token's access to organizations.
73 + - In the **Permissions** dropdown menu, select **No access**, **Read-only**, or **Read and write**.
74 + - Under **Select organizations**, select the organizations you want to grant your token access to.
75 +
76 + <Screenshot src="/integrations/integrating-npm-with-external-services/granular-access-token-organizations.png" alt="Screenshot of the organizations section" />
77 +
78 + _**Note**: When you give a token access to an organization, the token can only be used for managing organization settings and teams or users associated with the organization. It does not give the token the right to publish packages managed by the organization._
79 +
80 +9. Review the token summary, then click **Generate Token**.
81 +
82 + <Screenshot src="/integrations/integrating-npm-with-external-services/granular-access-token-summary.png" alt="Screenshot of the granular access token summary and the generate token button" />
83 +
84 +10. Copy the token from the top of page.
85 +
86 ### Creating tokens with the CLI
87
38 -You can create tokens with read-only permissions or read and publish permissions with the CLI; you cannot currently create automation tokens.
88 +You can create tokens with **read-only** permissions or **read and publish** permissions with the CLI.
89 +
90 +<Note>
91 +
92 +**Note:** You cannot create legacy automation tokens or granular access tokens from the CLI. You must use the website to generate these types of tokens. For more information, see "[Creating legacy tokens on the website][creating-legacy-tokens-on-the-website]" and "[Creating granular access tokens on the website][creating-granular-access-tokens-on-the-website]."
93 +
94 +</Note>
95
96 - **Read-only:** Tokens that allow installation and distribution only, but no publishing or other rights associated with your account.
97 - **Publish:** The default setting for new tokens, and most permissive token type. Publish tokens allow installation, distribution, modification, publishing, and all rights that you have on your account.
content/integrations/integrating-npm-with-external-services/using-private-packages-in-a-ci-cd-workflow.mdx
+6 -1
@@ -12,7 +12,9 @@ Create a new access token that will be used only to access npm packages from a C
12
13 ### Continuous integration
14
15 -By default, `npm token create` will generate a token with both read and write permissions. When generating a token for use in a continuous integration environment, we recommend creating a read-only token:
15 +When generating an access token for use in a continuous integration environment, we recommend using a granular access token with limited access to provide greater security.
16 +
17 +If you use a legacy token instead, by default, `npm token create` will generate a token with both read and write permissions. We recommend creating a read-only token:
18
19 ```
20 npm token create --read-only
@@ -87,4 +89,7 @@ Your token may have permission to read private packages, publish new packages on
89
90 Do not add your token to version control or store it insecurely. Store it in a password manager, your cloud provider's secure storage, or your CI/CD provider's secure storage.
91
92 +When possible, use granular access tokens with the minimum permissions necessary, and set short expiration dates for your tokens. For more information, see "[About access tokens][about-tokens]."
93 +
94 [create-token]: creating-and-viewing-access-tokens
95 +[about-tokens]: about-access-tokens
content/packages-and-modules/securing-your-code/requiring-2fa-for-package-publishing-and-settings-modification.mdx
+9 -10
@@ -20,20 +20,19 @@ You may also choose to allow publishing with either two-factor authentication _o
20 <Screenshot src="/packages-and-modules/securing-your-code/2fa-package-admin.png" alt="Screenshot showing the admin tab on a package page" />
21
22 4. Under "Publishing access", select the requirements to publish a package.
23 - 1. **Two-factor authentication is not required**
24 - With this option, a maintainer can publish a package or change the package settings whether they have two-factor authentication enabled or not. This is the least secure setting.
23 + 1. **Dont require two-factor authentication**
24 + With this option, a maintainer can publish a package or change the package settings whether they have two-factor authentication enabled or not. This is the least secure setting.
25
26 - 2. **Require two-factor authentication or automation tokens**
27 - With this option, maintainers must have two-factor authentication enabled for their account. If they publish a package interactively, using the `npm publish` command, they will be required to enter 2FA credentials when they perform the publish. However, maintainers may also create an [automation token][creating-tokens] and use that to publish. A second factor is _not_ required when using an automation token, making it useful for continuous integration and continuous deployment workflows.
26 + 2. **Require two-factor authentication or automation tokens or granular access token**
27 + With this option, maintainers must have two-factor authentication enabled for their account. If they publish a package interactively, using the `npm publish` command, they will be required to enter 2FA credentials when they perform the publish. However, maintainers may also create an [automation token][creating-automation-token] or a [granular access token][creating-granular-access-token]and use that to publish. A second factor is _not_ required when using a token, making it useful for continuous integration and continuous deployment workflows.
28
29 - 3. **Two-factor authentication only**
30 - With this option, a maintainer must have two-factor authentication enabled for their account, and they must publish interactively. Maintainers will be required to enter 2FA credentials when they perform the publish.
29 + 3. **Require two-factor authentication and disallow tokens**
30 + With this option, a maintainer must have two-factor authentication enabled for their account, and they must publish interactively. Maintainers will be required to enter 2FA credentials when they perform the publish. Automation tokens and granular access tokens cannot be used to publish packages.
31
32 - <Screenshot src="/packages-and-modules/securing-your-code/2fa-package-require.png" alt="Screenshot showing the require two-factor option for a package" />
32 + <Screenshot src="/packages-and-modules/securing-your-code/2fa-package-setting.png" alt="Screenshot showing the require two-factor option for a package" />
33
34 5. Click **Update Package Settings**.
35
36 - <Screenshot src="/packages-and-modules/securing-your-code/2fa-package-update.png" alt="Screenshot showing the update package settings button" />
37 -
36 [config-2fa]: configuring-two-factor-authentication
39 -[creating-tokens]: creating-and-viewing-access-tokens
37 +[creating-automation-token]: creating-and-viewing-access-tokens#creating-granular-access-tokens-on-the-website
38 +[creating-granular-access-token]: creating-and-viewing-access-tokens#creating-granular-access-tokens-on-the-website
\ No newline at end of file
static/integrations/integrating-npm-with-external-services/create-token.png
Binary files a/static/integrations/integrating-npm-with-external-services/create-token.png and b/static/integrations/integrating-npm-with-external-services/create-token.png differ
static/integrations/integrating-npm-with-external-services/granular-access-token-ip-range.png
Binary files /dev/null and b/static/integrations/integrating-npm-with-external-services/granular-access-token-ip-range.png differ
static/integrations/integrating-npm-with-external-services/granular-access-token-organizations.png
Binary files /dev/null and b/static/integrations/integrating-npm-with-external-services/granular-access-token-organizations.png differ
static/integrations/integrating-npm-with-external-services/granular-access-token-packages-scopes.png
Binary files /dev/null and b/static/integrations/integrating-npm-with-external-services/granular-access-token-packages-scopes.png differ
static/integrations/integrating-npm-with-external-services/granular-access-token-summary.png
Binary files /dev/null and b/static/integrations/integrating-npm-with-external-services/granular-access-token-summary.png differ
static/packages-and-modules/securing-your-code/2fa-package-setting.png
Binary files /dev/null and b/static/packages-and-modules/securing-your-code/2fa-package-setting.png differ