授权插件¶
警告
此功能是实验性的,可能会发生重大更改。有关更多信息,请参阅 Conan 稳定性 部分。
关于授权,我们有两个插件:一个专注于远程 Conan 服务器 的授权,名为 auth_remote.py;另一个专注于源代码服务器的授权,名为 auth_source.py。
这些插件背后的想法是为每个用户的秘密管理器创建自定义集成。
远程授权插件¶
第一个插件是一个 Python 脚本,它接收一个 Remote 对象和一个可选参数: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"
源授权插件¶
这是另一个 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` 进行共享和安装。
重要提示: 确保您的插件和配置不包含硬编码的秘密或敏感数据。相反,密码应使用您的实现通过秘密管理器进行检索。