keystone.federation.utils 模块

联邦扩展的实用工具。

class keystone.federation.utils.DirectMaps[source]

基类: object

对远程匹配的抽象。

每个匹配都在内部被视为一个列表。

add(values)[source]

将匹配的值添加到匹配列表。

参数:

value (list) – 要保存的匹配

class keystone.federation.utils.RuleProcessor(mapping_id, rules)[source]

基类: object

用于处理断言和映射规则的类。

extract_groups(groups_by_domain)[source]
extract_projects(identity_value)[source]
normalize_user(user, default_mapping_domain)[source]

解析并验证用户映射。

process(assertion_data)[source]

将断言转换为字典。

字典包含基于映射规则的用户名称和组 ID 的映射。

此函数将遍历映射规则以查找有效的断言。

参数:

assertion_data (dict) – 来自 IdP 的断言,包含值

示例 assertion_data

{
    'Email': 'testacct@example.com',
    'UserName': 'testacct',
    'FirstName': 'Test',
    'LastName': 'Account',
    'orgPersonType': 'Tester',
}
返回值:

包含用户和组 ID 的字典

预期的返回结构是

{
    'name': 'foobar',
    'group_ids': ['abc123', 'def456'],
    'group_names': [
        {'name': 'group_name_1', 'domain': {'name': 'domain1'}},
        {'name': 'group_name_1_1', 'domain': {'name': 'domain1'}},
        {'name': 'group_name_2', 'domain': {'id': 'xyz132'}},
    ],
}
process_group_by_name(group, groups_by_domain)[source]
class keystone.federation.utils.RuleProcessorToHonorDomainOption(mapping_id, rules)[source]

继承自 RuleProcessor

处理属性映射中配置的默认域。

此规则处理器旨在处理配置在属性映射根目录的 domain 属性。配置此属性时,我们应将其视为属性映射的默认属性,而不是 IdP 的域。此外,我们应尊重可以在 groupsuserprojects 属性定义中进行的重写。

extract_projects(identity_value)[source]
normalize_user(user, default_mapping_domain)[source]

解析并验证用户映射。

class keystone.federation.utils.UserType[source]

基类: object

用户映射类型。

EPHEMERAL = 'ephemeral'
LOCAL = 'local'
keystone.federation.utils.assert_enabled_identity_provider(federation_api, idp_id)[source]
keystone.federation.utils.assert_enabled_service_provider_object(service_provider)[source]
keystone.federation.utils.create_attribute_mapping_rules_processor(mapping)[source]
keystone.federation.utils.get_assertion_params_from_env()[source]
keystone.federation.utils.get_default_attribute_mapping_schema_version()[source]
keystone.federation.utils.get_remote_id_parameter(idp, protocol)[source]
keystone.federation.utils.transform_to_group_ids(group_names, mapping_id, identity_api, resource_api)[source]

将按名称/域标识的组转换为其 ID。

函数接受按名称和域标识的组列表,并返回组 ID 列表。如果后端中不存在该组,则会记录一条消息。

group_names 参数的示例

[
    {"name": "group_name", "domain": {"id": "domain_id"}},
    {"name": "group_name_2", "domain": {"name": "domain_name"}},
]
参数:
  • group_names (list) – 由名称及其域标识的组列表。

  • mapping_id (str) – 用于将断言映射到本地凭据的映射的 ID

  • identity_api – identity_api 对象

  • resource_api – 资源管理器对象

返回值:

包含组 ID 的生成器对象

keystone.federation.utils.validate_expiration(token)[source]
keystone.federation.utils.validate_idp(idp, protocol, assertion)[source]

提供断言的 IdP 应针对映射进行注册。

keystone.federation.utils.validate_mapped_group_ids(group_ids, mapping_id, identity_api)[source]

迭代组 ID 并确保它们存在于后端。

此调用不是事务性的。 :param group_ids: 要检查的组 ID 列表 :type group_ids: str 列表

参数:
  • mapping_id (str) – 用于此操作的映射的 ID

  • identity_api (identity.Manager) – 用于与后端通信的 Identity Manager 对象

引发:

keystone.exception.MappedGroupNotFound – 如果后端中未找到映射返回的组。

keystone.federation.utils.validate_mapping_structure(ref)[source]