keystoneauth1.identity 包¶
子包¶
- keystoneauth1.identity.generic 包
- keystoneauth1.identity.v3 包
- 子模块
- keystoneauth1.identity.v3.application_credential 模块
- keystoneauth1.identity.v3.base 模块
- keystoneauth1.identity.v3.federation 模块
- keystoneauth1.identity.v3.k2k 模块
- keystoneauth1.identity.v3.multi_factor 模块
- keystoneauth1.identity.v3.oauth2_client_credential 模块
- keystoneauth1.identity.v3.oauth2_mtls_client_credential 模块
- keystoneauth1.identity.v3.oidc 模块
- keystoneauth1.identity.v3.password 模块
- keystoneauth1.identity.v3.receipt 模块
- keystoneauth1.identity.v3.token 模块
- keystoneauth1.identity.v3.tokenless_auth 模块
- keystoneauth1.identity.v3.totp 模块
- 模块内容
- 子模块
子模块¶
模块内容¶
- class keystoneauth1.identity.BaseIdentityPlugin(auth_url: str | None = None, reauthenticate: bool = True)
基础:
BaseAuthPlugin- MIN_TOKEN_LIFE_SECONDS: int = 120
- __abstractmethods__ = frozenset({'get_auth_ref'})
- __annotations__ = {'MIN_TOKEN_LIFE_SECONDS': <class 'int'>, '_discovery_cache': 'dict[str, discover.Discover]', 'auth_ref': keystoneauth1.access.access.AccessInfo | None, 'auth_url': str | None, 'reauthenticate': <class 'bool'>}
- __doc__ = None
- __module__ = 'keystoneauth1.identity.base'
- _abc_impl = <_abc._abc_data object>
- _needs_reauthenticate() bool
返回是否需要重新验证现有令牌。
如果令牌即将过期,则应刷新令牌。
- 返回值:
如果插件应获取新的令牌,则返回 True。否则返回 False。
- auth_ref: AccessInfo | None
- get_access(session: Session, **kwargs: Any) AccessInfo
获取或返回当前的 AccessInfo 对象。
如果存在有效的 AccessInfo,则返回它,否则将获取一个新的 AccessInfo。
- 参数:
session (keystoneauth1.session.Session) – 可以用于通信的会话对象。
- 引发:
keystoneauth1.exceptions.http.HttpError – 来自无效 HTTP 响应的错误。
- 返回值:
有效的 AccessInfo
- 返回类型:
keystoneauth1.access.AccessInfo
- get_all_version_data(session: Session, interface: str | list[str] | None = 'public', region_name: str | None = None, service_type: str | None = None) dict[str, dict[str, dict[str, list[VersionData]]]]
获取目录中所有服务的版本数据。
- 参数:
session (keystoneauth1.session.Session) – 可以用于通信的会话对象。
interface – 要获取版本数据的端点类型。可以是一个单一值或一个值列表。值为 None 表示应查询所有接口。(可选,默认为 public)
region_name (string) – 要获取版本数据的端点区域。值为 None 表示应查询所有区域。(可选,默认为 None)
service_type (string) – 限制版本数据到单个服务。(可选,默认为 None)
- 返回值:
一个字典,键为 region_name,值为包含字典的字典,字典的键为 interface,值为
VersionData列表。
- get_api_major_version(session: Session, *, endpoint_override: str | None = None, service_type: str | None = None, interface: str | None = None, region_name: str | None = None, service_name: str | None = None, version: str | None = None, allow: dict[str, Any] | None = None, allow_version_hack: bool = True, skip_discovery: bool = False, discover_versions: bool = False, min_version: str | int | float | Iterable[str | int | float] | None = None, max_version: str | int | float | Iterable[str | int | float] | None = None, **kwargs: Any) tuple[int | float, ...] | None
获取服务的 API 主要版本。
如果不存在有效的令牌,则将使用会话和 kwargs 获取新的令牌。
version、min_version 和 max_version 都可以作为字符串或元组提供。
- 有效的接口类型:public 或 publicURL,
internal 或 internalURL,admin 或 ‘adminURL`
- 参数:
session (keystoneauth1.session.Session) – 可以用于通信的会话对象。
endpoint_override (str) – 用于版本发现的 URL。
service_type (string) – 要查找端点的服务类型。如果未提供 service_type,则此插件将返回 None(失败)。
interface – 端点类型。可以是一个值或一个值列表。如果它是一个值列表,它们将按优先级顺序查找。也可以是 keystoneauth1.plugin.AUTH_INTERFACE,以指示应使用目录中的 auth_url 代替值。(可选,默认为 public)
region_name (string) – 端点应存在的区域。(可选)
service_name (string) – 目录中的服务名称。(可选)
version – 此端点所需的最低版本号。(可选)
allow (dict) – 在发现 API 版本时传递的额外筛选器。(可选)
allow_version_hack (bool) – 允许 keystoneauth 破解目录 URL 以支持旧方案。(可选,默认值为 True)
skip_discovery (bool) – 即使提供了版本,是否跳过版本发现。如果提供了 endpoint_override 或类似内容,并且获取端点的其他信息没有用,则此选项很有用。
discover_versions (bool) – 即使不需要满足主版本请求,是否从版本发现文档中获取版本元数据。默认值为 False,因为 get_endpoint 不需要元数据。(可选,默认值为 False)
min_version – 可接受的最低版本。与 version 互斥。如果提供了 min_version 但没有 max_version,则 max_version 就像 ‘latest’ 一样。 (可选)
max_version – 可接受的最高版本。与 version 互斥。如果提供了 min_version 但没有 max_version,则 max_version 就像 ‘latest’ 一样。 (可选)
- 引发:
keystoneauth1.exceptions.http.HttpError – 来自无效 HTTP 响应的错误。
- 返回值:
服务发现的 API 主要版本。
- 返回类型:
tuple 或 None
注意
实现说明如下。用户不需要了解这些实现说明。 get_api_major_version 应该以尽可能低的成本完成预期的事情,同时仍然尽可能地一致地返回值。
在许多情况下,可以在不实际调用发现端点的情况下满足主要版本(例如,当版本在 URL 中时)。如果用户拥有一个云,其版本化的端点
https://volume.example.com/v3位于block-storage服务的目录中,并且他们执行client = adapter.Adapter( session, service_type='block-storage', min_version=2, max_version=3, ) volume_version = client.get_api_major_version()
实际返回的版本,无需进行除了获取令牌之外的任何 API 调用。为此,
get_api_major_version()首先使用discover_versions=False调用get_endpoint_data()。如果他们的目录具有未版本化的端点
https://volume.example.com用于block-storage服务,并且他们执行此操作client = adapter.Adapter(session, service_type='block-storage')
客户端现在设置为“使用目录中的任何内容”。由于 URL 没有版本,因此使用
discover_versions=False的get_endpoint_data()将导致api_version=None。(没有请求版本,因此不需要往返)为了确定端点的实际版本,我们必须进行往返。因此,如果第一次调用后
api_version为None,则get_api_major_version()将使用discover_versions=True再次调用get_endpoint_data()。
- abstract get_auth_ref(session: Session) AccessInfo
从 OpenStack Identity 服务获取令牌。
此方法由各种令牌版本插件覆盖。
不应独立调用此函数,并预计通过 do_authenticate 函数调用。
如果插件缓存的 AccessInfo 对象无效,将调用此函数。因此,插件应始终在调用时获取新的 AccessInfo。如果您只想检索当前的身份验证数据,则应使用 get_access。
- 参数:
session (keystoneauth1.session.Session) – 可以用于通信的会话对象。
- 引发:
keystoneauth1.exceptions.response.InvalidResponse – 返回的响应不合适。
keystoneauth1.exceptions.http.HttpError – 来自无效 HTTP 响应的错误。
- 返回值:
令牌访问信息。
- 返回类型:
keystoneauth1.access.AccessInfo
- get_auth_state() str | None
检索插件当前的身份验证状态。
检索表示已身份验证插件的任何内部状态。
如果不存在,则不应获取任何新数据。
- 返回值:
一个可以存储的字符串,或者如果插件中没有身份验证状态,则为 None。可以使用 set_auth_state 重新加载此字符串以设置相同的身份验证。
- 返回类型:
str 或如果不存在身份验证则为 None。
- get_cache_id() str | None
获取唯一标识身份验证选项的标识符。
返回的标识符不必可分解或以其他方式提供重现插件的任何方法。
此字符串必须在用于唯一标识此插件的任何参数发生更改时更改。它不应在插件重新身份验证时更改。
- 返回值:
选项的唯一字符串
- 返回类型:
str 或如果不支持或不可用则为 None。
- get_cache_id_elements() dict[str, str | None]
获取使此身份验证插件唯一化的元素。
作为 get_cache_id 要求的一部分,我们需要确定此插件及其值的哪些方面构成唯一的元素。
插件希望允许缓存时应覆盖此方法。
- 返回值:
此插件的唯一属性和值。
- 返回类型:
一个扁平的字典,其中包含一个 str 键和一个 str 或 None 值。这需要我们将这些值馈送到哈希中。值为空的对在哈希 ID 中被忽略。
- get_discovery(session: Session, url: str, authenticated: bool | None = None) Discover
为 URL 返回发现对象。
检查会话和插件缓存,查看是否已经对 URL 执行过发现,如果是,则返回它,否则创建一个新的发现对象,将其缓存并返回它。
此函数预计由子类使用,用户不需要使用。
- 参数:
- 引发:
keystoneauth1.exceptions.discovery.DiscoveryFailure – 如果由于某种原因查找失败。
keystoneauth1.exceptions.http.HttpError – 来自无效 HTTP 响应的错误。
- 返回值:
包含查找该 URL 结果的发现对象。
- get_endpoint(session: Session, service_type: str | None = None, interface: str | None = None, region_name: str | None = None, service_name: str | None = None, version: str | int | float | Iterable[str | int | float] | None = None, allow: dict[str, Any] | None = None, allow_version_hack: bool = True, skip_discovery: bool = False, min_version: str | int | float | Iterable[str | int | float] | None = None, max_version: str | int | float | Iterable[str | int | float] | None = None, **kwargs: Any) str | None
返回服务的有效端点。
如果不存在有效的令牌,则将使用会话和 kwargs 获取新的令牌。
version、min_version 和 max_version 都可以作为字符串或元组提供。
- 有效的接口类型:public 或 publicURL,
internal 或 internalURL,admin 或 ‘adminURL`
- 参数:
session (keystoneauth1.session.Session) – 可以用于通信的会话对象。
service_type (string) – 要查找端点的服务类型。如果未提供 service_type,则此插件将返回 None(失败)。
interface – 端点类型。可以是一个值或一个值列表。如果它是一个值列表,它们将按优先级顺序查找。也可以是 keystoneauth1.plugin.AUTH_INTERFACE,以指示应使用目录中的 auth_url 代替值。(可选,默认为 public)
region_name (string) – 端点应存在的区域。(可选)
service_name (string) – 目录中的服务名称。(可选)
version – 此端点所需的最低版本号。(可选)
allow (dict) – 在发现 API 版本时传递的额外筛选器。(可选)
allow_version_hack (bool) – 允许 keystoneauth 破解目录 URL 以支持旧方案。(可选,默认值为 True)
skip_discovery (bool) – 即使提供了版本,是否跳过版本发现。如果提供了 endpoint_override 或类似内容,并且获取端点的其他信息没有用,则此选项很有用。
min_version – 可接受的最低版本。与 version 互斥。如果提供了 min_version 但没有 max_version,则 max_version 就像 ‘latest’ 一样。 (可选)
max_version – 可接受的最高版本。与 version 互斥。如果提供了 min_version 但没有 max_version,则 max_version 就像 ‘latest’ 一样。 (可选)
- 引发:
keystoneauth1.exceptions.http.HttpError – 来自无效 HTTP 响应的错误。
- 返回值:
有效的端点 URL 或不可用时为 None。
- 返回类型:
字符串或 None
- get_endpoint_data(session: Session, *, endpoint_override: str | None = None, discover_versions: bool = True, service_type: str | None = None, interface: str | None = None, region_name: str | None = None, service_name: str | None = None, allow: dict[str, Any] | None = None, allow_version_hack: bool = True, skip_discovery: bool = False, min_version: str | int | float | Iterable[str | int | float] | None = None, max_version: str | int | float | Iterable[str | int | float] | None = None, **kwargs: Any) EndpointData | None
为服务返回有效的端点数据。
如果不存在有效的令牌,则将使用会话和 kwargs 获取新的令牌。
version、min_version 和 max_version 都可以作为字符串或元组提供。
- 有效的接口类型:public 或 publicURL,
internal 或 internalURL,admin 或 ‘adminURL`
- 参数:
session (keystoneauth1.session.Session) – 可以用于通信的会话对象。
endpoint_override (str) – 使用此 URL 代替在目录中查找。将跳过目录查找,但将运行版本发现。将 allow_version_hack 设置为 False (可选)
discover_versions (bool) – 即使不需要满足主版本请求,是否从版本发现文档获取版本元数据。(可选,默认为 True)
service_type (string) – 要查找端点的服务类型。如果未提供 service_type,则此插件将返回 None(失败)。
interface – 端点类型。可以是一个值或一个值列表。如果它是一个值列表,它们将按优先级顺序查找。也可以是 keystoneauth1.plugin.AUTH_INTERFACE,以指示应使用目录中的 auth_url 代替值。(可选,默认为 public)
region_name (string) – 端点应存在的区域。(可选)
service_name (string) – 目录中的服务名称。(可选)
allow (dict) – 在发现 API 版本时传递的额外筛选器。(可选)
allow_version_hack (bool) – 允许 keystoneauth 破解目录 URL 以支持旧方案。(可选,默认值为 True)
skip_discovery (bool) – 即使提供了版本,是否跳过版本发现。如果提供了 endpoint_override 或类似内容,并且获取端点的其他信息没有用,则此选项很有用。
min_version – 可接受的最低版本。与 version 互斥。如果提供了 min_version 但没有 max_version,则 max_version 就像 ‘latest’ 一样。 (可选)
max_version – 可接受的最高版本。与 version 互斥。如果提供了 min_version 但没有 max_version,则 max_version 就像 ‘latest’ 一样。 (可选)
kwargs – 已忽略。
- 引发:
keystoneauth1.exceptions.http.HttpError – 来自无效 HTTP 响应的错误。
- 返回值:
有效的 EndpointData 或不可用的 None。
- 返回类型:
keystoneauth1.discover.EndpointData 或 None
- get_project_id(session: Session) str | None
返回插件认证到的项目 ID。
只要可能,项目 ID 应该从 token 推断出来,但是某些 URL 和其他地方需要访问当前认证的项目 ID。
- 参数:
session (keystoneauth1.session.Session) – 一个会话对象,以便插件可以进行 HTTP 调用。
- 返回值:
一个项目标识符,如果不可用则为 None。
- 返回类型:
- get_sp_auth_url(session: Session, sp_id: str) str | None
从服务提供商对象返回 auth_url。
此 URL 用于从远程云获取未作用域的联合 token。
- 参数:
sp_id (string) – 要查询的服务提供商的 ID。
- 返回值:
一个服务提供商 auth_url,如果不可用则为 None。
- 返回类型:
- get_sp_url(session: Session, sp_id: str) str | None
从服务提供商对象返回 sp_url。
此 URL 用于将 SAML2 断言传递到远程云。
- 参数:
sp_id (str) – 要查询的服务提供商的 ID。
- 返回值:
一个服务提供商 sp_url,如果不可用则为 None。
- 返回类型:
- get_token(session: Session) str | None
返回有效的身份验证 token。
如果不存在有效的 token,则将获取一个新的 token。
- 参数:
session (keystoneauth1.session.Session) – 可以用于通信的会话对象。
- 引发:
keystoneauth1.exceptions.http.HttpError – 来自无效 HTTP 响应的错误。
- 返回值:
一个有效的 token。
- 返回类型:
字符串
- get_user_id(session: Session) str | None
返回插件的唯一用户标识符。
只要可能,用户 ID 应该从 token 推断出来,但是某些 URL 和其他地方需要访问当前认证的用户 ID。
- 参数:
session (keystoneauth1.session.Session) – 一个会话对象,以便插件可以进行 HTTP 调用。
- 返回值:
一个用户标识符,如果不可用则为 None。
- 返回类型:
- invalidate() bool
使当前的身份验证数据失效。
这应该导致在下次调用时获取新的 token。
如果返回 Unauthorized HTTP 响应以指示 token 可能已被撤销或现在无效,则插件可能会失效。
- 返回值:
如果插件执行了某些操作以使其失效,则为 True。这意味着尝试再次是有意义的。如果未发生任何事情,则返回 False 以指示放弃。
- 返回类型:
- reauthenticate: bool
- class keystoneauth1.identity.Password(auth_url: str, username: str | None = None, user_id: str | None = None, password: str | None = None, user_domain_id: str | None = None, user_domain_name: str | None = None, *, tenant_id: str | None = None, tenant_name: str | None = None, project_id: str | None = None, project_name: str | None = None, project_domain_id: str | None = None, project_domain_name: str | None = None, domain_id: str | None = None, domain_name: str | None = None, system_scope: str | None = None, trust_id: str | None = None, default_domain_id: str | None = None, default_domain_name: str | None = None, reauthenticate: bool = True)
继承自:
BaseGenericPlugin一个通用的用户名/密码身份验证插件。
- 参数:
username (string) – 身份验证的用户名。
user_id (字符串) – 用于身份验证的用户 ID。
password (string) – 身份验证的密码。
user_domain_id (字符串) – 用于身份验证的用户的域 ID。
user_domain_name (字符串) – 用于身份验证的用户的域名称。
- __abstractmethods__ = frozenset({})
- __annotations__ = {'MIN_TOKEN_LIFE_SECONDS': 'int', '_discovery_cache': 'dict[str, discover.Discover]', '_plugin': 'v2.Auth | v3.Auth | None', 'auth_ref': 'access.AccessInfo | None', 'auth_url': 'str', 'reauthenticate': 'bool'}
- __doc__ = "一个 通用的 用户名/密码 身份验证 插件。\n :param 字符串 username: 用于身份验证的用户名。\n :param 字符串 user_id: 用于身份验证的用户 ID。\n :param 字符串 password: 用于身份验证的密码。\n :param 字符串 user_domain_id: 用于身份验证的用户的域 ID。\n :param 字符串 user_domain_name: 用于身份验证的用户的域名称。\n "
- __init__(auth_url: str, username: str | None = None, user_id: str | None = None, password: str | None = None, user_domain_id: str | None = None, user_domain_name: str | None = None, *, tenant_id: str | None = None, tenant_name: str | None = None, project_id: str | None = None, project_name: str | None = None, project_domain_id: str | None = None, project_domain_name: str | None = None, domain_id: str | None = None, domain_name: str | None = None, system_scope: str | None = None, trust_id: str | None = None, default_domain_id: str | None = None, default_domain_name: str | None = None, reauthenticate: bool = True)
- __module__ = 'keystoneauth1.identity.generic.password'
- _abc_impl = <_abc._abc_data object>
- create_plugin(session: Session, version: tuple[int | float, ...], url: str, raw_status: str | None = None) None | Password | Password
创建一个插件,基于给定的参数。
此函数将多次调用,并带有潜在终结点的版本和 URL。如果可以构造一个符合参数的插件,则应返回它。如果不能,则将进行另一个调用,并使用其他可用的 URL。
- class keystoneauth1.identity.Token(auth_url: str, token: str, *, tenant_id: str | None = None, tenant_name: str | None = None, project_id: str | None = None, project_name: str | None = None, project_domain_id: str | None = None, project_domain_name: str | None = None, domain_id: str | None = None, domain_name: str | None = None, system_scope: str | None = None, trust_id: str | None = None, default_domain_id: str | None = None, default_domain_name: str | None = None, reauthenticate: bool = True)
继承自:
BaseGenericPlugin通用 Token 认证插件。
- 参数:
token (字符串) – 用于认证的 Token。
- __abstractmethods__ = frozenset({})
- __annotations__ = {'MIN_TOKEN_LIFE_SECONDS': 'int', '_discovery_cache': 'dict[str, discover.Discover]', '_plugin': 'v2.Auth | v3.Auth | None', 'auth_ref': 'access.AccessInfo | None', 'auth_url': 'str', 'reauthenticate': 'bool'}
- __doc__ = '通用 Token 认证插件。\n\n :参数 字符串 token: 用于认证的 Token。\n '
- __init__(auth_url: str, token: str, *, tenant_id: str | None = None, tenant_name: str | None = None, project_id: str | None = None, project_name: str | None = None, project_domain_id: str | None = None, project_domain_name: str | None = None, domain_id: str | None = None, domain_name: str | None = None, system_scope: str | None = None, trust_id: str | None = None, default_domain_id: str | None = None, default_domain_name: str | None = None, reauthenticate: bool = True)
- __module__ = 'keystoneauth1.identity.generic.token'
- _abc_impl = <_abc._abc_data object>
- keystoneauth1.identity.V2Password
请参阅
keystoneauth1.identity.v2.Password
- keystoneauth1.identity.V2Token
请参阅
keystoneauth1.identity.v2.Token
- keystoneauth1.identity.V3ApplicationCredential
请参阅
keystoneauth1.identity.v3.ApplicationCredential
- keystoneauth1.identity.V3MultiFactor
请参阅
keystoneauth1.identity.v3.MultiFactor
- keystoneauth1.identity.V3OAuth2ClientCredential
请参阅
keystoneauth1.identity.v3.OAuth2ClientCredential
- keystoneauth1.identity.V3OAuth2mTlsClientCredential
请参阅
keystoneauth1.identity.v3.OAuth2mTlsClientCredential
- keystoneauth1.identity.V3OidcAccessToken
请参阅
keystoneauth1.identity.v3.oidc.OidcAccessToken
- keystoneauth1.identity.V3OidcAuthorizationCode
请参阅
keystoneauth1.identity.v3.oidc.OidcAuthorizationCode
- keystoneauth1.identity.V3OidcClientCredentials
请参阅
keystoneauth1.identity.v3.oidc.OidcClientCredentials
- keystoneauth1.identity.V3OidcDeviceAuthorization
请参阅
keystoneauth1.identity.v3.oidc.OidcDeviceAuthorization
- keystoneauth1.identity.V3OidcPassword
请参阅
keystoneauth1.identity.v3.oidc.OidcPassword
- keystoneauth1.identity.V3Password
请参阅
keystoneauth1.identity.v3.Password
- keystoneauth1.identity.V3TOTP
请参阅
keystoneauth1.identity.v3.TOTP
- keystoneauth1.identity.V3Token
请参阅
keystoneauth1.identity.v3.Token
- keystoneauth1.identity.V3TokenlessAuth
请参阅
keystoneauth1.identity.v3.TokenlessAuth