4.20. 创建映射文件和上传到 Keystone

Keystone 执行映射,将 IdP 的 SAML 断言与 keystone 可以理解的格式匹配。映射由 keystone 的映射规则执行,它基于绑定到 IdP 的映射规则。

  1. 这些是本示例中使用的映射规则(如简介所述):

    [
        {
            "local": [
                {
                    "user": {
                        "name": "{0}"
                    },
                    "group": {
                        "domain": {
                            "name": "federated_domain"
                        },
                        "name": "federated_users"
                    }
                }
            ],
            "remote": [
                {
                    "type": "MELLON_NAME_ID"
                },
                {
                    "type": "MELLON_groups",
                    "any_one_of": ["openstack-users"]
                }
            ]
        }
    ]

此映射文件仅包含一条规则。规则被分为两个部分:localremote。映射引擎的工作原理是迭代规则列表,直到匹配为止,然后执行它。只有在规则 的远程 部分的 所有条件都匹配时才会考虑规则。在本例中,远程 条件指定:

  1. 断言必须包含名为 MELLON_NAME_ID 的值。
  2. 断言必须包含名为 MELLON_groups 的值,组列表中至少有一个组必须是 openstack-users

如果规则匹配,则:

  1. keystone 用户名 将被分配来自 MELLON_NAME_ID 的值。
  2. 该用户将被分配给 federated_domain 域中的 keystone 组 federated_users

在摘要中,如果 IdP 成功验证用户,并且 IdP 属于组 openstack-users,那么 keystone 将允许该用户使用绑定到 keystone 中的 federated_users 组的权限访问 OpenStack。

4.20.1. 创建映射

  1. 要在 keystone 中创建映射,请创建一个包含映射规则的文件,然后将其上传到 keystone,为其提供参考名称。在 fed_deployment 目录中创建映射文件(例如,在 fed_deployment/mapping_${FED_IDP_IDP_NAME}_saml2.json)中,并将名称 $FED_114_MAPPING_NAME 分配给映射规则。例如:

    $ openstack mapping create --rules fed_deployment/mapping_rhsso_saml2.json $FED_OPENSTACK_MAPPING_NAME
注意

您可以使用 configure-federation 脚本作为两个步骤执行上述步骤:

$ ./configure-federation create-mapping
$ ./configure-federation openstack-create-mapping
  • create-mapping - 创建映射文件。
  • openstack-create-mapping - 执行文件的上传。