授权插件

警告

此功能处于实验阶段,可能会发生重大更改。有关更多信息,请参阅 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 installconan config install-pkg 共享和安装

**重要:**确保您的插件和配置**不**包含硬编码的密钥或敏感数据。相反,应使用您的实现和密钥管理器来检索密码。