keycloak组成员导致每个用户的LDAP查询

时间:2019-12-05 20:19:08

标签: keycloak

我有一个带有只读LDAP联合身份验证的密钥库实例。通过搜索GROUP_ID和USER_ID(查询LDAP服务器),然后使用“ PUT”将USER添加到GROUP(我使用python解析JSON),将成员添加到组中:

GROUP_ID=$(curl -s -H "Authorization: bearer $ACCESS_TOKEN" \
    https://${KEYCLOAK_SERVER}/auth/admin/realms/myrealm/groups|python -c '
import json,sys,os;keycloak_data=json.load(sys.stdin);
GROUP=os.environ["GROUP"]
for g in keycloak_data:
    if g["name"]==GROUP:
        print g["id"]
        sys.exit()
')


USER_ID=$(curl -s -H "Authorization: bearer $ACCESS_TOKEN" \
    https://${KEYCLOAK_SERVER}/auth/admin/realms/myrealm/users?username=$USER | python -c '
import json,sys,os;keycloak_data=json.load(sys.stdin)
USERID=os.environ["USER"]
for c in keycloak_data:
    if c["attributes"]["LDAP_ID"][0]==USERID:
        print c["id"]
        sys.exit()
')

echo "Adding $USER to $GROUP    GROUP_ID=$GROUP_ID      USER_ID=$USER_ID"

curl -s -X PUT -H "Authorization: bearer $ACCESS_TOKEN" \
https://${KEYCLOAK_SERVER}/auth/admin/realms/myrealm/users/$USER_ID/groups/$GROUP_ID

以上效果很好。但是,当我想获取该组中的成员列表时,它将为每个用户查询LDAP(如果组中有100个以上的用户,则可能需要很长时间)

curl -s -H "Authorization: bearer $ACCESS_TOKEN" \
    https://${KEYCLOAK_SERVER}/auth/admin/realms/myrealm/groups/$GROUP_ID/members

有什么方法可以查询组成员身份而不触发该组每个成员的LDAP查询?我已经尝试过在LDAP联合身份验证下更改LDAP缓存设置,但似乎无济于事。

我只想(迅速)知道给定密钥斗篷组中的用户。

0 个答案:

没有答案