授权插件¶
警告
此功能为实验性功能,可能会发生重大更改。 有关更多信息,请参见Conan 稳定性部分。
关于授权,我们有两个插件:一个侧重于远程 Conan 服务器 授权,auth_remote.py
,另一个侧重于源文件服务器的授权,auth_source.py
。
这些插件背后的想法是创建与每个用户的密钥管理器自定义集成。
Auth remote 插件¶
第一个插件是一个 Python 脚本,它接收一个 Remote 对象和一个可选参数:user
。 如果提供了 user,则预期的输出是使用该用户名的凭据。 输出应为我们想要用于该远程仓库的用户名元组,或者如果未为该远程仓库指定任何凭据,并且我们希望 Conan 遵循正常的登录流程,则输出 None
。
此插件位于路径 <CONAN_HOME>/extensions/plugins/auth_remote.py
,必须手动创建,名称为 auth_remote.py
,其中包含一个名为 auth_remote_plugin(remote, user=None, **kwargs)
的函数。
检索凭据的顺序如下
首先,尝试从
auth_remote_plugin
获取凭据。如果它不存在或返回
None
,则下一步是检查credentials.json
。之后,搜索环境变量。
最后,通过交互式提示获取凭据。
在这里我们可以看到一个插件实现的例子。
def auth_remote_plugin(remote, user=None, **kwargs):
if remote.url.startswith("https://artifactory.my-org/"):
return "admin", "password"
Auth source 插件¶
这个插件是一个 Python 脚本,它接收一个 url
作为参数,并输出一个包含凭据或访问令牌的字典。 它也可以返回 None
以指示 Conan 应该继续执行其正常的登录流程。
此插件位于路径 <CONAN_HOME>/extensions/plugins/auth_source.py
,必须手动创建,名称为 auth_source.py
,其中包含一个名为 auth_source_plugin(url, **kwargs)
的函数。
检索凭据的顺序如下
首先,尝试从
auth_source_plugin
获取凭据。如果它不存在或返回
None
,则尝试从source_credentials.json
中检索它们。
在这里我们可以看到一个插件实现的例子。
def auth_source_plugin(url, **kwargs):
if url.startswith("https://my-sources-user-password.my-org/"):
return {'user': 'my-user', 'password': 'my-password'}
elif url.startswith("https://my-private-token-sources.my-org/"):
return {'token': 'my-secure-token'}
注意
这些插件可以使用 conan config install
或 conan config install-pkg
共享和安装
重要提示: 确保您的插件和配置**不**包含硬编码的密钥或敏感数据。 而是应该使用您的实现和一个密钥管理器来检索密码。