如何将用户映射到OpenStack联合中的Federated以外的域?

时间:2016-09-30 07:58:27

标签: openstack federated-identity keystone federation

我试图理解OpenStack上的直接映射。我想将用户映射到Federated域以外的域。但我总是将用户映射到联邦域。以下是我正在使用的直接映射的链接:

https://specs.openstack.org/openstack/keystone-specs/specs/kilo/federated-direct-user-mapping.html

以下是我正在使用的映射规则:

[
  {
    "local": [
      {
        "user": {
          "name": "{0}",
          "domain": {"name": "Default"}
        }
      },
      {
        "group": {
          "id": "GROUP_ID"
        }
      }
    ],
    "remote": [
      {
        "type": "HTTP_OIDC_SUB"
      }
    ]
  }
]

我已将OpenID连接Idp配置为联盟。

有人可以帮助我如何直接映射将联​​合用户映射到Federated以外的域吗?

1 个答案:

答案 0 :(得分:0)

我能够让它不在“联邦”域中的唯一方法是强制用户为本地类型,但后来它们需要存在于后端(SQL / LDAP)中。

[
  {
    "local": [
      {
        "user": {
          "name": "{0}",
          "type": "local",
          "domain": {"name": "Default"}
        }
      },
      {
        "group": {
          "id": "GROUP_ID"
        }
      }
    ],
    "remote": [
      {
        "type": "HTTP_OIDC_SUB"
      }
    ]
  }
]

keystone中的以下代码是执行此操作的罪魁祸首:

   if user_type is None:
        user_type = user['type'] = UserType.EPHEMERAL

    if user_type == UserType.EPHEMERAL:
        user['domain'] = {
            'id': CONF.federation.federated_domain_name
        }

如果您的用户没有类型,或者是短暂的,那么它基本上会将域覆盖到预先配置的域。