keystone.identity.core 模块¶
身份服务的主要入口点。
- class keystone.identity.core.DomainConfigs[source]¶
基类:
ProviderAPIMixin,dict发现、存储并提供对特定域配置的访问。
通过第一次调用此管理器处理的驱动程序函数,将调用 setup_domain_drivers()。
特定于域的配置仅受身份后端支持,并且根据 ‘domain_configurations_from_database’ 配置选项的设置,这些配置要么在资源数据库中指定,要么在各个域配置文件中指定。
结果是,对于具有特定配置的每个域,此类将保存一个 ConfigOpts 和驱动程序对象的引用,该对象可供身份管理器和驱动程序使用。
- check_config_and_reload_domain_driver_if_required(domain_id)[source]¶
检查并加载此域的任何新的特定域配置。
这仅支持数据库存储的特定域配置。
在设置特定于域的驱动程序时,我们存储了当时可用的此域的特定配置。因此,我们现在读取当前版本并进行比较。虽然这可能看起来效率不高,但敏感配置调用已缓存,因此应该轻量级。更重要的是,当达到缓存超时时,我们将获得从任何其他 keystone 进程更新的任何配置。
此缓存超时方法适用于多进程和多线程 keystone 配置。在多线程配置中,即使我们可能删除一个驱动程序对象(可能被另一个线程使用),在所有引用都被破坏之前,它实际上不会被丢弃。当另一个线程被释放并使用另一个命令重新启动时,下次它访问驱动程序时将获取新的驱动程序。
- configured = False¶
- driver = None¶
- lock = <unlocked _thread.lock object>¶
- class keystone.identity.core.Manager[source]¶
继承自:
Manager身份后端默认的枢纽点。
有关此动态调用后端的更多详细信息,请参阅
keystone.common.manager.Manager。此类还处理对特定域后端的支持,通过使用 DomainConfigs 类。DomainConfigs 的设置调用从 @domains_configured 包装器中的延迟加载方式调用,以解决我们在 __init__() 函数中无法满足其需要的分配 API 的事实,因为分配驱动程序本身尚未初始化。
每个身份调用在此处进行预处理,以根据域选择应调用哪个驱动程序。非特定于域的驱动程序仍然存在,并且在没有特定于域的驱动程序(或我们不使用多个域驱动程序)的情况下使用。
从 Juno 开始,为了能够仅从作为 API 调用的一部分呈现的 ID 中获取域,维护了一个公共 ID 到域和本地 ID 的映射。此映射还允许通过公共 ID 引用不提供简单 UUID 的驱动程序(例如 LDAP)的本地 ID。该映射本身会在通过驱动程序访问实体时自动生成。
仅当满足以下条件时才使用此映射:- 实体由默认驱动程序以外的任何内容处理,或者 - 实体由默认 LDAP 驱动程序处理并且不需要向后兼容的 ID。
这意味着在单个 SQL 后端或单个 LDAP 后端的默认设置(因为默认情况下已设置向后兼容的 ID 为 True)的标准情况下,不使用映射。另一种方法是始终使用映射表,但在我们不需要它使公共 ID 和本地 ID 相同的情况下。认为默认情况下不使用映射是引入此功能的更谨慎方法。
- driver_namespace: str = 'keystone.identity'¶
- class keystone.identity.core.MappingManager[source]¶
继承自:
ManagerID 映射后端的默认枢纽点。
- driver_namespace: str = 'keystone.identity.id_mapping'¶
- class keystone.identity.core.ShadowUsersManager[source]¶
继承自:
ManagerShadow Users 后端的默认枢纽点。
- driver_namespace: str = 'keystone.identity.shadow_users'¶