附加组件¶
keystoneauth 插件的可扩展性被有意设计为允许各种不同的身份验证机制,这些机制不必驻留在上游软件包中。然而,上游支持一些涉及额外依赖项的插件,而 keystoneauth 包不能直接依赖这些依赖项。
为了解决这个问题,我们利用 setuptools extras 依赖项 来实现额外的插件。要使用像 kerberos 插件这样具有额外依赖项的插件,您必须安装这些额外的依赖项,例如
pip install keystoneauth1[kerberos]
按照惯例(不是要求),额外的插件在 keystoneauth1.extras 模块中有一个与依赖项同名的模块。例如:
from keystoneauth1.extras import kerberos
keystoneauth 没有专门检查是否安装了访问模块的正确依赖项。如果未找到所需的依赖项,您应该会看到标准的 python ImportError。
示例¶
所有附加插件都遵循以下模式
导入插件模块
实例化插件
调用插件的 get_token 方法,并传递一个 session 对象来获取 token
Kerberos¶
使用 Kerberos 获取域范围的 token
from keystoneauth1.extras import kerberos
from keystoneauth1 import session
plugin = kerberos.Kerberos('http://example.com:5000/v3')
sess = session.Session(plugin)
token = plugin.get_token(sess)
获取未范围的联合 token
from keystoneauth1.extras import kerberos
from keystoneauth1 import session
plugin = kerberos.MappedKerberos(
auth_url='http://example.com:5000/v3', protocol='example_protocol',
identity_provider='example_identity_provider')
sess = session.Session()
token = plugin.get_token(sess)
获取项目范围的联合 token
from keystoneauth1.extras import kerberos
from keystoneauth1 import session
plugin = kerberos.MappedKerberos(
auth_url='http://example.com:5000/v3', protocol='example_protocol',
identity_provider='example_identity_provider',
project_id='example_project_id')
sess = session.Session()
token = plugin.get_token(sess)
project_id = plugin.get_project_id(sess)