credentials.json¶
警告
此功能为实验性功能,可能存在重大更改。有关详细信息,请参阅 Conan 稳定性 部分。
Conan 可以使用以下方式对 Conan 远程服务器进行身份验证
交互式命令行,当某些服务器启动未授权错误时,Conan 客户端将交互式地请求用户名/密码并重试。
使用
conan remote login
命令,可以通过参数传递或交互方式进行身份验证。使用环境变量
CONAN_LOGIN_USERNAME
(适用于所有远程服务器)(CONAN_LOGIN_USERNAME_{REMOTE}
适用于单个远程服务器) 和CONAN_PASSWORD
(CONAN_PASSWORD_{REMOTE}
适用于单个远程服务器),Conan 在必要时不会在命令行中请求交互式输入,而是将从环境变量中获取值,就像它们是由用户提供的。使用放置在 Conan 缓存中的
credentials.json
文件。使用自定义的 身份验证插件。
本节介绍 credentials.json
文件的使用方法。
此文件具有以下格式,其中每个 credentials
条目都应具有一个 remote
名称,该名称与 conan remote list
中定义的名称匹配。然后是 user
和 password
字段。
{
"credentials": [
{
"remote": "default",
"user": "admin",
"password": "password"
}
]
}
在必要时,并且服务器请求时,Conan 将能够自动从此文件中提取凭据。
注意
Conan 不会在每个 Conan 命令中预先使用凭据来强制自动登录到每个定义的远程服务器。默认情况下,Conan 使用先前存储的令牌或匿名使用,直到执行显式的 conan remote login
命令,或直到远程服务器启动身份验证错误。发生这种情况时,将对该服务器进行身份验证,使用 credentials.json
文件、环境变量或用户交互式输入。
凭据来源的优先级如下
如果
credentials.json
文件存在,则它具有更高的优先级,如果存在远程服务器的条目,则将使用它。如果它不起作用,则会发生错误。如果该远程服务器的
credentials.json
中不存在条目,则会查找已定义的环境变量如果环境变量不存在,则会交互式地请求凭据。如果
core:non_interactive=True
,则会发生错误。
使用注入的 platform
和 os
导入对 credentials.json
文件进行 Jinja 渲染,因此它允许使用 Jinja 语法。例如,它可以执行以下操作,以从环境变量中获取凭据
{% set myuser = os.getenv('myuser') %}
{% set mytk = os.getenv('mytoken') %}
{
"credentials": [
{
"remote": "myremote",
"user": "{{myuser}}"
"password": "{{mytk}}"
}
]
}