【问题标题】:Using auth tokens in .npmrc在 .npmrc 中使用身份验证令牌
【发布时间】:2019-04-05 13:38:41
【问题描述】:

我有一个项目,我们使用 font awesome 5 库。我按照here 中的说明进行操作,并使用我的身份验证令牌添加了一个.npmrc 文件。

将其放入回购中是否安全?我希望开发人员能够访问它,但如果 repo 公开,我们可能会暴露令牌。

在这种情况下最好的做法是什么?

【问题讨论】:

    标签: npm environment-variables font-awesome


    【解决方案1】:

    2021-05-02 更新

    这个答案仍然值得怀疑 - 请参阅下面的 cmets。我不再有权访问私人($paid)npm 帐户,因此我无法再通过测试来回答问题。

    也许试试@konyak 的回答。


    绝对不是将令牌放入任何 git 检查文件(包括 .npmrc)中的安全行为。

    以下是您的团队可以采取的步骤来安全地利用您的 npm 令牌。

    有两种不同的环境需要考虑:

    1. 每个开发者的本地开发机器
    2. 应用的部署平台

    本地开发

    遵循您在问题中链接到的Global Set Up instructions 不是解决方案。

    创建类似于"Per project" instructions 的.npmrc 文件,但用变量名替换您的真实令牌,前缀为$。即:

    @fontawesome:registry=https://npm.fontawesome.com/
    //npm.fontawesome.com/:_authToken=$TOKEN
    

    npm 将检测一个名为 .env 的环境变量文件。因此,在.gitignored .env 文件中,添加您的密钥值对,即:

    TOKEN=ABC123
    

    你也可以在变量名前加上“NPM_CONFIG_”,根据npm-config docs,即:

    NPM_CONFIG_TOKEN=ABC123
    

    现在,当开发者运行 npm i 时,字体很棒的依赖项将从私有存储库中加载。

    注意:不要遵循当前关于环境变量语法的 npm-config 文档!见this stack overflow answer,即:

    ? BAD npm-config ENVIRONMENT VAR SYNTAX ?
    
    ${TOKEN}
    
    ? GOOD npm-config ENVIRONMENT VAR SYNTAX ?
    
    $TOKEN
    

    应用部署平台

    执行上述本地开发部分的所有步骤,另外:

    • 在平台上创建一个与 .npmrc 文件同名的环境变量。

    如果您的应用主机是 Netlify,请查看他们的 Build Environment Variables docs

    【讨论】:

    • npm install 从 .env 读取的记录在哪里?此解决方案对我不起作用,未检测到环境变量。
    • 在 .npmrc 中不需要“$”
    • 如何防止npm login 将您的身份验证令牌放回原处?
    • 您链接到的关于为什么$TOKEN${TOKEN} 更可取的答案已被删除(而且,从来没有解释过为什么应该首选$TOKEN,刚才说它应该)。您能否详细说明一下:为什么$TOKEN${TOKEN} 更可取?如果一个适合您而另一个不适合,您使用的是哪个操作系统?
    • 关于扩展的答案是不正确的 $TOKEN${TOKEN} 在它们扩展的方面是相同的。引用 bash 手册 The ‘$’ character introduces parameter expansion, command substitution, or arithmetic expansion. The parameter name or symbol to be expanded may be enclosed in braces, which are optional (如果您希望我链接到 zsh 手册,请 lmk 说同样的话:D)
    【解决方案2】:

    https://docs.npmjs.com/using-private-packages-in-a-ci-cd-workflow

    将您的秘密令牌导出到您的会话中,例如,export NPM_TOKEN="00000000-0000-0000-0000-000000000000"

    在您的~/.npmrc 中,添加//registry.npmjs.org/:_authToken=${NPM_TOKEN}

    【讨论】:

    • 这是我过去 4 小时一直在寻找的答案!我不知道我发现的所有其他答案是否适用于 Win 和 Mac,但这实际上是唯一适用于我的 Linux 的解决方案!谢谢! (我只能投票 1 次。这需要更多的投票!)
    • :_authToken= 不起作用并且我不得不将其作为_auth= 放在单独的行上是否有原因?是否有某种语法变化或什么?
    猜你喜欢
    • 2019-06-28
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 2016-09-06
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    相关资源
    最近更新 更多