2016-09-30 57 views
1

我想了解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的聯盟。

有人能幫助我如何做直接映射將聯​​合用戶映射到聯合以外的域?

回答

0

我已經能夠讓它不在'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 
     } 

它基本上覆蓋域預配置的域,如果您的用戶沒有一個類型,或是短暫的。