身份验证¶
Keystone 身份验证¶
客户端将身份验证委托给 Keystone Sessions,后者在 keystoneauth1.identity 命名空间中提供了多个身份验证插件。以下我们给出最常用的身份验证插件的示例。
Keystone API 版本 3 身份验证¶
可以使用 keystoneauth1.identity.V3Password 身份验证插件实现使用 Keystone API 版本 3 进行身份验证。
示例
from barbicanclient import client from keystoneauth1 import identity from keystoneauth1 import session auth = identity.V3Password(auth_url='https://:5000/v3', username='admin_user', user_domain_name='Default', password='password', project_name='demo', project_domain_name='Default') sess = session.Session(auth=auth) barbican = client.Client(session=sess)
Keystone API 版本 2 身份验证¶
可以使用 keystoneauth1.identity.V2Password 身份验证插件实现使用 Keystone API 版本 2 进行身份验证。
示例
from barbicanclient import client from keystoneauth1 import identity from keystoneauth1 import session auth = identity.V2Password(auth_url='https://:5000/v2.0', username='admin_user', password='password', tenant_name='demo') sess = session.Session(auth=auth) barbican = client.Client(session=sess)
未经验证的上下文¶
有时,在未经验证的上下文中处理客户端可能很有用,例如,在使用尚未配置为使用 Keystone 进行身份验证的 Barbican 开发实例时。在这种情况下,必须提供 Barbican Service 端点,以及将用于上下文的项目 ID(即拥有您将要使用的密钥的项目)。
示例
from barbicanclient import client barbican = client.Client(endpoint='https://:9311', project_id='123456')
CLI 身份验证¶
Keystone V3 身份验证¶
可以将 Barbican 配置为使用 Keystone 进行身份验证。用户的凭据可以通过参数传递给 Barbican。
$ barbican --os-auth-url <keystone-v3-url> --os-project-domain-id \
<domain id> --os-user-domain-id <user domain id> --os-username <username> \
--os-password <password> --os-project-name <project-name> secret list
这可能会变得烦人和繁琐,因此也可以通过设置环境变量来配置通过 Keystone 进行身份验证。Barbican 使用与 python-keystoneclient 相同的环境变量,因此如果您已经配置了 keystone 客户端,可以跳过本节。
在主 python-barbicanclient 目录中提供了一个示例 clientrc 文件。
export OS_PROJECT_NAME=<YourProjectName>
# Either Project Domain ID or Project Domain Name is required
export OS_PROJECT_DOMAIN_ID=<YourProjectDomainID>
export OS_PROJECT_DOMAIN_NAME=<YourProjectDomainName>
# Either User Domain ID or User Domain Name is required
export OS_USER_DOMAIN_ID=<YourUserDomainID>
export OS_USER_DOMAIN_NAME=<YourUserDomainName>
# Either User ID or Username can be used
export OS_USER_ID =<YourUserID>
export OS_USERNAME=<YourUserName>
export OS_PASSWORD=<YourPassword>
# OS_AUTH_URL should be your location of Keystone
# Barbican Client defaults to Keystone V3
export OS_AUTH_URL="<YourAuthURL>:5000/v3/"
export BARBICAN_ENDPOINT="<YourBarbicanEndpoint>:9311"
对该文件进行任何适当的更改。
您需要在每次加载时将其导入到您的环境中
source ~/clientrc
如果您愿意,可以配置您的 bash 在每次登录时加载变量
echo "source ~/clientrc" >> ~/.bashrc
Keystone Token 身份验证¶
可以将 Barbican 配置为使用 Keystone Token 进行身份验证。用户的凭据可以通过参数传递给 Barbican。
$ barbican --os-auth-url <auth_endpoint> --os-auth-token <auth_token> \
--os-project-id <project_id> secret list
就像正常的密码身份验证一样,您可以通过环境变量指定这些值。有关更多信息,请参阅 Keystone V3 身份验证。
无身份验证模式¶
在使用不使用 Keystone 身份验证的 Barbican 实例(例如,在开发期间)时,可以使用 --no-auth 选项。如果这样做,您必须指定 Barbican 端点和项目 ID --os-project-id。这是因为 Barbican 通常从 Keystone 获取端点和租户 ID。