我有一个带有只读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缓存设置,但似乎无济于事。
我只想(迅速)知道给定密钥斗篷组中的用户。