我试图理解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以外的域吗?
答案 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
}
如果您的用户没有类型,或者是短暂的,那么它基本上会将域覆盖到预先配置的域。