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

问题描述:

我想了解OpenStack上的直接映射。我想将用户映射到除Federated域以外的域。但我总是将用户映射到联合域。这里如下,我使用的链接,直接映射:如何将用户映射到OpenStack联合中的联合以外的域?

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的联盟。

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

我已经能够让它不在'Federate'域中的唯一方法是强制用户是local类型的,但是他们需要存在于后端(SQL/LDAP)中, 。

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

的基石以下代码位是这样做的罪魁祸首:

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

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

它基本上覆盖域预配置的域,如果您的用户没有一个类型,或是短暂的。