PowerFlex 4.x LDAP-ryhmää ei voi lisätä tai poistaa
Summary: Kun AD on poistettu PFxM:stä eikä Keycloak pysty poistamaan välimuistissa olevia LDAP-ryhmiä.
Symptoms
Tilanne
Ryhmän ensimmäinen lisäysyritys aiheuttaa virheen:
Failed to add Remote group Failed to find request group


Kun ryhmät on täytetty keycloak ldap -suodattimessa, PowerFlex 4.X - LDAP-ryhmähakusuodattimen käyttäminen PFxM:ssä Keycloak Admin Console | Dell US ja synkronointi PFxM:stä LDAP-palveluntarjoajaan, sso.stdout.log osoittaa, että ryhmäsynkronointi ei toimi:
2024-09-25T07:10:31.684769872Z stdout F 2024-09-25T07:10:31.684Z INFO 1 --- [io-8083-exec-10] c.d.s.c.DirectoryServicesController : Received sync user request 2024-09-25T07:10:31.685080784Z stdout F 2024-09-25T07:10:31.684Z INFO 1 --- [pool-9-thread-1] c.d.s.managers.DirectoryServiceManager : starting sync process for ldap groups 2024-09-25T07:10:31.69678586Z stdout F 2024-09-25T07:10:31.696Z INFO 1 --- [pool-9-thread-1] com.dell.sso.clients.KeycloakClient : Ldap group sync started 2024-09-25T07:10:31.710659167Z stdout F 2024-09-25T07:10:31.710Z ERROR 1 --- [pool-9-thread-1] com.dell.sso.clients.KeycloakClient : Failed to sync groups: HTTP 500 Internal Server Error 2024-09-25T07:10:31.710959458Z stderr F Exception in thread "pool-9-thread-1" java.lang.RuntimeException: com.dell.sso.exceptions.KeycloakException: Failed to sync groups or sync users
LDAP-palveluntarjoajan poistamisen jälkeen tietokannassa näkyy edelleen ryhmiä (alla on esimerkiksi neljä ryhmää)
delladmin@mvm1:/>kubectl exec -it -c database -n powerflex $(kubectl get pods -n powerflex -l='postgres-operator.crunchydata.com/role=master, postgres-operator.crunchydata.com/instance-set' | grep Running | cut -d' ' -f1) -- psql -U postgres -d keycloak -c "SELECT COUNT(*) FROM keycloak_group;"
count
-------
4
(1 row)
Yhteys PFMP:n LDAP:hen on vahvistettava seuraavalla komennolla:
kubectl exec -it keycloak-0 -n powerflex -- curl --verbose ldap://
Esimerkki:

Vaikutus
LDAP-ryhmiä ei voi lisätä tai poistaa.
Cause
|
Kun AD poistetaan:
|
Resolution
Poista kukin ryhmä yksitellen ohjelmointirajapinnan avulla yksi kerrallaan.
1) Hae Keycloak-tunnistetiedot.
kubectl get secrets -n powerflex keycloak-admin-credentials -o jsonpath='{.data.username}' | base64 --decode; echo -e
kubectl get secrets -n powerflex keycloak-admin-credentials -o jsonpath='{.data.password}' | base64 --decode; echo -e
2) Hanki käyttöoikeustunnus (huomautus: korvaa 4578ZZyT3f yllä olevan lähdön salasanalla):
TOKEN=$(curl -X POST https://keycloak-http.powerflex/auth/realms/master/protocol/openid-connect/token -H 'Content-Type: application/x-www-form-urlencoded' -d 'scope=openid&grant_type=password&client_id=admin-cli&username=keycloak&password=4578ZZyT3f' | jq -r '.access_token'); echo $TOKEN
3) Tarkista ryhmät api:n avulla (listaa 10 ryhmää kerrallaan)
curl -X GET "https://keycloak-http.powerflex/auth/admin/realms/powerflex/groups?first=0&max=10" -H "Authorization: Bearer $TOKEN" | jq
4) Poista ryhmät yksi kerrallaan (korvaa kullakin yllä olevan vaiheen 3 tunnuksella.
curl -X DELETE https://keycloak-http.powerflex/auth/admin/realms/powerflex/groups/"" -H "Authorization: Bearer $TOKEN"
Vaihtoehtoisesti voit käyttää silmukkakomentosarjaa poistaaksesi group_id yksi kerrallaan.
for group_id in $(curl -X GET "https://keycloak-http.powerflex/auth/admin/realms/powerflex/groups" -H "Authorization: Bearer $TOKEN" | jq -r '.[].id'); do curl -X DELETE "https://keycloak-http.powerflex/auth/admin/realms/powerflex/groups/$group_id" -H "Authorization: Bearer $TOKEN"; done
Esimerkki

Versiot, joita ongelma koskee
PFMP 4.x
Korjattu versiossa
Keycloakin tuleva versio tukee joukkoryhmien poistamista.