Podstawy provisioningu SCIM: przepływy, pola i bezpieczne testy
Podstawy provisioningu SCIM: jak utrzymać zgodność użytkowników z IdP — przepływy create/update/deactivate, wymagane pola i bezpieczne kroki testowe.

Co to jest provisioning SCIM i dlaczego zespoły go używają
Provisioning SCIM rozwiązuje prosty, ale bolesny problem: lista osób mających dostęp do aplikacji powoli przestaje zgadzać się z listą w dostawcy tożsamości (IdP). Ktoś zostaje zatrudniony, zmienia nazwisko, przechodzi do innego zespołu albo odchodzi, a aplikacja nie zawsze odzwierciedla tę zmianę od razu.
Provisioning oznacza, że IdP automatycznie przesyła zmiany użytkowników do aplikacji. Zamiast bycia zależnym od administratora, który ręcznie zaprasza użytkowników, aktualizuje profile i usuwa dostęp, zmiany zaczynają się w IdP, a aplikacja je odzwierciedla.
Gdy zaproszenia i offboarding są ręczne, te same błędy pojawiają się w kółko. Nowi pracownicy czekają na dostęp, bo ktoś zapomniał wysłać zaproszenie. Byli pracownicy mają ciągle dostęp, bo offboarding został pominięty. Nazwy, emaile i działy „dryfują” między narzędziami. Audyty stają się trudniejsze, bo nie można ufać liście użytkowników w aplikacji. Zgłoszeń do wsparcia przybywa (nie można się zalogować, złe uprawnienia, wciąż widoczne stare dane).
SCIM sprawdza się, gdy potrzebujesz niezawodnej kontroli cyklu życia użytkownika na dużą skalę, szczególnie dla narzędzi wewnętrznych, paneli administracyjnych i portali klientów, gdzie dostęp powinien odzwierciedlać decyzje HR i IT.
Sam SSO zazwyczaj nie wystarcza. SSO odpowiada na pytanie „jak użytkownik się loguje?” SCIM odpowiada na pytanie „czy ten użytkownik powinien istnieć w aplikacji i jak wygląda jego konto teraz?”.
Główna idea: jedno źródło prawdy dla użytkowników
Zacznij od jednej zasady: wybierz jeden system, który jest „prawdziwy” odnośnie tego, kim jest użytkownik i co może robić. W większości firm tym systemem jest IdP (Okta, Azure AD, Google Workspace).
IdP to miejsce, gdzie ludzie są tworzeni, wyłączani i przypisywani do grup. Service provider (SP) to aplikacja otrzymująca te decyzje i stosująca je we własnej bazie użytkowników. To może być produkt SaaS albo własna aplikacja wewnętrzna, którą zbudowaliście.
Gdy IdP jest źródłem prawdy, aplikacja nie powinna się z nim spierać. Jeśli administrator dezaktywuje użytkownika w IdP, aplikacja powinna traktować go jako dezaktywowanego, nawet jeśli ktoś próbuje go ponownie włączyć lokalnie. To samo dotyczy członkostwa w grupach, gdy grupy decydują o dostępie.
Provisioning jest zwykle push‑owy: IdP wysyła zmiany do aplikacji, gdy coś się zmienia. To różni się od pull‑owego synchronizowania katalogu, gdzie aplikacja okresowo pyta, co się zmieniło. Push jest szybszy i czytelniejszy, ale błędy mogą zadziałać natychmiast, więc domyślne ustawienia i reguły dopasowania mają znaczenie.
Większość aktywności napędzają normalne zdarzenia HR i IT: nowe zatrudnienia, zmiany roli, urlopy i rozwiązanie stosunku pracy. Jeśli kontrolujesz status i przypisania do grup w IdP, zmniejszasz liczbę duplikatów, „duchów” kont i braków dostępu przy nagłych zmianach zespołu.
Przepływy życia użytkownika: create, update, deactivate
Większość konfiguracji provisioningu sprowadza się do jednej obietnicy: IdP mówi aplikacji, kto istnieje i czy może się logować. Twoja aplikacja musi konsekwentnie obsługiwać kilka stanów cyklu życia.
Trzy stany, które się liczą
Zwykle myśli się o trzech stanach:
- Active: użytkownik może się uwierzytelniać i korzystać z produktu.
- Inactive (dezaktywowany): konto pozostaje, ale dostęp jest zablokowany.
- Deleted: rekord zostaje usunięty (wiele aplikacji unika twardych usunięć i traktuje to jak inactive).
Create zwykle występuje, gdy administrator przypisuje aplikację osobie w IdP lub gdy ktoś dołącza do zsynchronizowanej grupy. Twój endpoint SCIM powinien zapisać to, co potrzebne do późniejszego dopasowania tej osoby: stabilny unikalny identyfikator z IdP (często SCIM id), oraz wartość logowania (często userName). Jeśli aplikacja wymaga emaila, wyraźnie to zmapuj, żeby tworzenie nie zakończyło się błędem w połowie procesu.
Update ma miejsce, gdy IdP zmienia pole profilu lub przypisanie. Zastosuj zmiany w polach identyfikacyjnych i kontaktowych (imię, email, dział) bez niespodziewanej zmiany uprawnień. Najbardziej wrażliwe jest pole identyfikatora logowania. Jeśli userName może się zmieniać, nadal musisz dopasowywać tę samą osobę za pomocą niemiennego identyfikatora. W przeciwnym razie stworzysz duplikaty.
Deactivate powinno szybko blokować dostęp bez utraty danych biznesowych. IdP zwykle ustawia active=false. Twoja aplikacja powinna traktować to jako „brak możliwości logowania, brak dostępu do API”, przy jednoczesnym zachowaniu własności rekordów, historii audytu i odniesień.
Reactivate to odwrotność. active=true powinno przywrócić dostęp do tego samego konta, a nie tworzyć nowego. Jeśli IdP uważa to za tę samą osobę, twoja aplikacja też powinna, nawet jeśli email lub nazwa wyświetlana zmieniły się podczas nieobecności.
Wymagane pola i mapowanie atrybutów, które unika niespodzianek
Provisioning działa, gdy aplikacja i IdP zgadzają się co do dwóch rzeczy: jak zidentyfikować użytkownika i które atrybuty IdP może nadpisywać.
Minimum, którego zwykle potrzebujesz
SCIM jest elastyczny, ale większość aplikacji polega na tych podstawowych atrybutach:
- Stabilny unikalny identyfikator (zasób SCIM
id, często sparowany zexternalIdod IdP) - Email lub nazwa użytkownika (zazwyczaj
userName, często używane do logowania) - Imię i nazwisko (albo
name.givenNameiname.familyName, albodisplayName) - Status aktywności (
active: true/false) - Znaczniki czasu lub metadane (opcjonalne, ale pomocne przy audytach i debugowaniu)
Identyfikator to kluczowa rzecz. Email wydaje się unikalny, ale się zmienia. Jeśli dopasowujesz użytkowników wyłącznie po emailu, a ktoś zmieni nazwisko (np. po ślubie), migracja domeny lub rebranding może spowodować, że IdP potraktuje to jako nową osobę zamiast aktualizacji starej. To częsta droga do duplikatów.
Zdecyduj, które pola IdP może nadpisywać
Wybierz jasną regułę: które pola są własnością IdP (IdP zawsze wygrywa), a które są własnością aplikacji (aplikacja może je zmieniać bez ich nadpisywania).
Typowy, bezpieczny podział:
- Własność IdP:
active, email/username, imię i nazwisko,displayName - Własność aplikacji: pola profilu specyficzne dla aplikacji (preferencje, notatki wewnętrzne)
Jeśli aplikacja pozwala użytkownikom edytować imię i nazwisko, zdecyduj, czy te edycje mają pozostać, czy zostaną nadpisane przy następnym SCIM update. Obie opcje są akceptowalne — problem pojawia się, gdy zachowanie jest nieprzewidywalne.
Obsługa brakujących i nieczytelnych danych
Spodziewaj się pustych pól i niejednolitego formatu. Niektóre katalogi wysyłają tylko displayName. Inne wysyłają imię i nazwisko, ale nie displayName. Praktycznym rozwiązaniem jest budowanie displayName z givenName i familyName, gdy to potrzebne, i łagodne traktowanie brakujących pól.
Waliduj pola krytyczne. Jeśli userName jest pusty albo nie jest emailem, kiedy twoje logowanie tego wymaga, odrzuć żądanie z jasnym błędem i zaloguj przyczynę. Ciche tworzenie użytkownika, który nie może się zalogować, zamienia się w wolny outage.
Jak dopasowuje się konto i dlaczego pojawiają się duplikaty
„Dopasowanie” oznacza zgodę między IdP a twoją aplikacją, że dwa rekordy reprezentują tę samą osobę. Większość problemów z provisioningiem sprowadza się do tego, które pola aplikacja używa, aby znaleźć istniejącego użytkownika, gdy IdP wysyła update.
Co powinno służyć do dopasowania
Dopasowuj najpierw po stabilnym, nie‑ludzkim identyfikatorze. Traktuj email i username jako dane profilowe, które mogą się zmieniać.
Typowe klucze dopasowania (od najbardziej wiarygodnego do najmniej):
- Immuntowalny zewnętrzny identyfikator od IdP
- SCIM
id(stabilny dla użytkownika w tej aplikacji) - Email (użyteczny, ale zmienny)
- Username (często zmieniany, ponownie używany lub formatowany inaczej)
Jeśli twoja aplikacja dopasowuje po samym emailu, zmiana emaila może wyglądać jak nowa osoba i stworzyć duplikat. Zamiast tego trzymaj external ID jako klucz główny i zezwalaj, by email aktualizował się bez zmiany tożsamości.
Dlaczego powstają duplikaty
Duplikaty pojawiają się najczęściej w trzech sytuacjach:
- IdP wysyła „create”, bo aplikacja nie zwróciła jasnego dopasowania, często z powodu brakujących wymaganych atrybutów lub błędu mapowania.
- Aplikacja traktuje email jako unikalny identyfikator, więc zmiana emaila tworzy drugiego użytkownika.
- Ta sama osoba jest provisionowana z dwóch miejsc (dwa IdP lub ręczne zaproszenia plus SCIM).
Aby zmniejszyć konflikty, wybierz jednego właściciela dla kluczowych pól profilu. Jeśli IdP zarządza imionami, emailem i statusem, nie polegaj na ręcznych edycjach w aplikacji dla tych pól (albo oznacz je wyraźnie jako „zarządzane przez IdP”).
Jeśli dwóch użytkowników IdP zacznie wskazywać na jednego użytkownika aplikacji, nie łącz automatycznie. Wstrzymaj SCIM dla tych kont, zdecyduj, która tożsamość IdP jest poprawna, ponownie powiąż za pomocą externalId i dezaktywuj błędne konto. To zachowuje spójność historii audytu.
Grupy, role i dostęp: utrzymuj zasady przewidywalne
Gdy SCIM zaczyna przesyłać użytkowników i grupy, największe ryzyko to niespodziewany dostęp. Utrzymuj prosty model: nadaj dostęp na podstawie grup IdP albo na podstawie ról zarządzanych w aplikacji. Mieszanie obu bez jasnej reguły prowadzi do incydentów „dlaczego on dostał dostęp?”.
Dostęp oparty na grupach działa dobrze, gdy IdP jest miejscem, gdzie administratorzy już zarządzają członkostwem zespołów. Dostęp oparty na rolach lepiej się sprawdza, gdy właściciele aplikacji potrzebują dopracowywać uprawnienia bez sięgania do IdP. Jeśli musisz je łączyć, zdefiniuj, która reguła ma pierwszeństwo w konflikcie.
Bądź konserwatywny wobec domyślnych ustawień. Jeśli dane o grupach są opóźnione lub brakujące (częste podczas pierwszej synchronizacji), twórz konto, ale nie przyznawaj mu wrażliwego dostępu, dopóki nie nadejdą oczekiwane grupy. Traktuj „brak grup” jako „brak dostępu”, zamiast zgadywać.
Przewidywalny zestaw reguł:
- Utworzenie użytkownika: przypisz rolę bazową z minimalnym dostępem lub żadną rolę.
- Dodanie do grupy: przyznaj dostęp powiązany z tą grupą.
- Usunięcie z grupy: natychmiast usuń ten dostęp.
- Dezaktywacja użytkownika: zablokuj logowanie i odejmij dostęp niezależnie od grup.
- Reaktywacja użytkownika: przywróć tylko to, co pozwalają aktualne członkostwa w grupach.
Usunięcie z grupy i dezaktywacja to różne rzeczy. Usunięcie z grupy powinno zmniejszyć uprawnienia, ale pozostawić konto używalne, jeśli użytkownik należy do innych grup. Dezaktywacja to twardy stop przy offboardingu.
Zachowaj krótką, ale konkretną dokumentację: które grupy mapują do których uprawnień, co się dzieje, gdy grupy są brakujące, kto jest właścicielem zmian grup (IT vs właściciel aplikacji) i mniej więcej jak długo zajmują zmiany, by się pojawić.
Krok po kroku: testuj SCIM bez blokowania ludzi
Zacznij w środowisku nieprodukcyjnym (oddzielny tenant, workspace lub staging) z czystym katalogiem i kilkoma kontami testowymi. Włącz provisioning tam najpierw.
Zanim cokolwiek podłączysz, utwórz konto awaryjne (break‑glass) niezarządzane przez SCIM. Nadaj mu mocne hasło i trzymaj je poza przypisaniami IdP SCIM. To twoja droga powrotna, jeśli provisioning wyłączy normalnych administratorów.
Użyj małej grupy pilotażowej (2–5 osób). Dołącz jednego admina i jednego zwykłego użytkownika. Nie włączaj provisioningu dla całej firmy, dopóki pilot nie zachowuje się dokładnie tak, jak oczekujesz.
Prosty plan testów obejmujący ryzykowne części:
- Create: Przypisz nowego użytkownika testowego w IdP i potwierdź, że konto pojawia się w aplikacji z właściwym imieniem, emailem i statusem.
- Update: Zmień jedno pole (często email) i potwierdź, że aplikacja aktualizuje tego samego użytkownika zamiast tworzyć duplikat.
- Deactivate: Usuń przypisanie (lub wyłącz użytkownika) i potwierdź, że aplikacja blokuje dostęp bez usuwania danych biznesowych.
- Reactivate: Ponownie przypisz użytkownika i potwierdź, że to samo konto staje się aktywne.
- Powtórz: Uruchom te same kroki ponownie, by wychwycić zachowanie „tylko przy pierwszym uruchomieniu”.
Nie ufaj wyłącznie UI. Sprawdź logi SCIM po obu stronach i potwierdź znaczniki czasu: kiedy IdP wysłał zmianę, kiedy aplikacja ją przetworzyła i które pola zostały zmodyfikowane.
Jeśli którykolwiek krok tworzy drugie konto, dezaktywuje niewłaściwego użytkownika lub odbiera dostęp administratora, zatrzymaj rollout i napraw reguły dopasowania oraz mapowanie atrybutów zanim rozlejesz provisioning poza pilot.
Typowe błędy powodujące blokady lub nieporządek w katalogu
Większość problemów to nie „błędy SCIM”. Wynikają z małych założeń, które wydają się nieszkodliwe podczas konfiguracji, a następnie psują się przy skali. Reguły dopasowania i domyślne ustawienia mają większe znaczenie niż sam konektor.
Błędy, które zwykle powodują blokady
Typowe wzory prowadzące do dezaktywacji kont, duplikatów i rozrostu dostępu:
- Luźne reguły dopasowania (np. dopasowanie tylko po emailu albo pozwalanie na wielu użytkowników z tym samym identyfikatorem).
- Traktowanie emaila jako stałego ID mimo jego zmian przy rename, migracjach domen czy ponownym użyciu adresu.
- Pozwalanie SCIM na nadpisywanie ręcznych poprawek bez monitoringu (IdP będzie przywracać swoją wersję prawdy).
- Nadawanie szerokiego dostępu przy tworzeniu użytkownika i zapominanie o późniejszym ograniczeniu.
- Włączanie provisioningu dla wszystkich bez pilota, więc jeden błąd mapowania uderza w całą firmę.
Realny scenariusz awarii: podczas zmiany domeny IT zmienia emaile. Jeśli aplikacja dopasowuje po emailu, SCIM nie znajdzie istniejącego konta, utworzy nowe, a potem dezaktywuje stare. Użytkownik kończy z dwoma profilami, zepsutą historią i brakiem dostępu w najgorszym momencie.
Jak uniknąć bałaganu
Dopasowuj po stabilnym, unikalnym identyfikatorze (często immutowalnym ID IdP) i traktuj email jako pole zmienne.
Zdecyduj, kto może edytować pola użytkownika w aplikacji. Jeśli SCIM jest źródłem prawdy, albo zablokuj ręczne edycje pól zarządzanych przez IdP, albo wyraźnie oznacz, że zostaną one nadpisane.
Zacznij od małego pilota i domyślnych ustawień najmniejszych uprawnień. Łatwiej dodać dostęp, gdy zaufasz przepływowi, niż sprzątać po nadmiernym provisioningu lub błędnym dezaktywowaniu.
Krótka lista kontrolna przed włączeniem SCIM dla większej liczby użytkowników
Zanim rozszerzysz provisioning poza pilota, zweryfikuj pełen cykl życia: utwórz właściwe konto, zaktualizuj ten sam rekord później i odejmij dostęp, gdy trzeba.
Użyj jednej świeżej tożsamości testowej w IdP (nie prawdziwy pracownik). Zaprovisionuj ją i potwierdź, że konto pojawia się z oczekiwanym userName, emailem, displayName i statusem w aplikacji.
Następnie przeprowadź test zmiany. Zaktualizuj imię i email osoby w IdP i obserwuj aplikację. Chcesz, żeby jeden rekord użytkownika został zaktualizowany, a nie by powstał drugi.
Na koniec przetestuj usunięcie i odzyskanie. Dezaktywuj użytkownika w IdP i potwierdź, że nie może się zalogować i nie ma dostępu. Potem reaktywuj i potwierdź, że dostęp wraca przewidywalnie (poprawne role, poprawne grupy, bez przypadkowych uprawnień administracyjnych).
Krótka lista przed go‑live:
- Nowy użytkownik prowizjonuje się poprawnie z właściwymi polami kluczowymi i zaczyna w oczekiwanym stanie dostępu.
- Zmiany profilu aktualizują tę samą osobę (bez duplikatów).
- Dezaktywacja blokuje logowanie i szybko usuwa dostęp.
- Reaktywacja przywraca dostęp bezpiecznie.
- Istnieje możliwość odzyskania admina (konto break‑glass, możliwość wstrzymania SCIM, ślad audytu ostatnich zmian).
Realistyczny przykład: onboarding i offboarding członka zespołu
Wyobraź sobie 200‑osobową firmę korzystającą z IdP i SCIM do zarządzania dostępem do narzędzia wewnętrznego.
W poniedziałek Maya dołącza do Sales Ops. Gdy IT przypisuje aplikację Mayi w IdP, SCIM wysyła Create. Nowy użytkownik pojawia się w aplikacji z właściwym unikalnym identyfikatorem, emailem i wartością „Sales Ops” w polu działu. Jeśli dostęp jest oparty na grupach, aplikacja otrzymuje też członkostwo, które nadaje odpowiednią rolę.
W czwartek Maya przechodzi do RevOps. To wyzwala Update. Maya pozostaje tą samą osobą (ten sam external ID), ale atrybuty się zmieniają. Jeśli uprawnienia zależą od działu lub grup, to tutaj pokazują się błędy, więc warto to od razu zweryfikować.
Pod koniec miesiąca Maya odchodzi. IdP dezaktywuje konto lub usuwa przypisanie aplikacji, a SCIM wysyła Deactivate (często update active=false). Maya nie może się logować, ale jej historyczne dane pozostają własnością firmy.
Administrator może szybko zweryfikować:
- Create: użytkownik istnieje raz, może się zalogować, dostaje oczekiwaną rolę domyślną.
- Update: ten sam rekord użytkownika jest aktualizowany (bez duplikatu) i dostęp zmienia się poprawnie.
- Deactivate: logowanie zablokowane, sesje zakończone, brak nowego dostępu przez API, historia audytu nienaruszona.
- Audit: zdarzenia SCIM są logowane ze znacznikami czasu i wynikami.
Jeśli wykonujesz dostęp tymczasowy dla kontrahenta, nie używaj konta Mayi. Utwórz oddzielną tożsamość kontraktora w IdP, umieść ją w grupie czasowej i pozwól provisioningowi zarządzać usunięciem.
Kolejne kroki: wdrażaj bezpiecznie i utrzymuj to w porządku
Provisioning łatwo uruchomić, ale trudniej prowadzić go dobrze. Traktuj go jak mały system z zasadami, właścicielami i logiem zmian.
Spisz mapowanie atrybutów i zasady dostępu w jednym miejscu: które pola IdP wypełniają userName, email, imię, dział, managera i które grupy nadają dostęp. Gdy ktoś zapyta, dlaczego dana osoba została dezaktywowana, chcesz mieć jedną odpowiedź, a nie pięć domysłów.
Wybierz pilota wystarczająco duży, by był realny, ale na tyle mały, by można było cofnąć zmiany. Zdefiniuj kamienie milowe (dzień 1, tydzień 1, tydzień 2), miej wyraźne kroki rollbacku (wstrzymaj przypisania, zatrzymaj SCIM, przywróć dostęp) i trzymaj konto break‑glass poza SCIM.
Monitoring pozwala uniknąć poznawania problemów od zdenerwowanych użytkowników. Uzgodnij, co będziesz obserwować i kto dostanie powiadomienia: skoki dezaktywacji lub reaktywacji, nagły wzrost duplikatów, nietypowo wysoki wolumen update'ów (często pętla mapowania) oraz użytkownicy tworzeni bez wymaganych atrybutów.
Jeśli budujesz aplikację samodzielnie, zaplanuj zarządzanie użytkownikami wcześnie: tworzenie kont, aktualizowanie profili, dezaktywacja kont i przypisywanie ról. Jest to o wiele prostsze, gdy są to funkcje pierwszorzędne.
Jeśli prototypujesz narzędzia wewnętrzne, AppMaster (appmaster.io) może być praktycznym sposobem na zbudowanie backendu, aplikacji webowej i mobilnej w jednym miejscu, a potem podłączenie SCIM przez twoje API, gdy model użytkownika i zasady dostępu są stabilne.
FAQ
SCIM provisioning automatycznie utrzymuje listę użytkowników w aplikacji zgodnie z danymi z dostawcy tożsamości (IdP). Gdy ktoś zostaje zatrudniony, zmienia nazwisko, przechodzi do innego zespołu lub odchodzi, IdP przesyła te zmiany do aplikacji, więc administratorzy nie muszą ręcznie zapraszać, edytować czy usuwać kont.
SSO kontroluje wyłącznie sposób logowania użytkownika. SCIM decyduje, czy użytkownik powinien w ogóle istnieć w aplikacji, czy jest aktywny i jak wyglądają jego pola profilu w danym momencie. Używanie obu rozwiązań razem zapobiega sytuacjom typu „może się zalogować, ale nie powinien mieć konta” albo „ma konto, ale nie ma dostępu”.
Traktuj IdP jako źródło prawdy dla pól tożsamości i statusu życia konta, a aplikację ustaw tak, by konsekwentnie to odzwierciedlała. Jeśli aplikacja pozwala na lokalne edycje, ustal, które pola IdP może nadpisywać, żeby nie tworzyć mylących sprzeczności.
Większość zespołów używa trzech stanów: active, inactive (zdezaktywowane) i deleted. W praktyce wiele aplikacji unika twardych usunięć i stosuje dezaktywację, bo blokuje dostęp, a jednocześnie zachowuje dane biznesowe i historię audytu.
Przechowuj stabilny, unikalny identyfikator od IdP (często SCIM id, czasem razem z immutowalnym identyfikatorem IdP), oraz wartość logowania jak userName i wymagane pola kontaktowe, np. email. Stabilny identyfikator zapobiega duplikatom, gdy emaily lub nazwy użytkowników się zmieniają.
Najpierw dopasowuj użytkowników po niemiennym identyfikatorze, a nie po emailu. Email i nazwy użytkowników zmieniają się przy zmianie nazwiska, migracjach domen czy rebrandingu, a używanie ich jako klucza głównego prowadzi szybko do duplikatów.
Zdefiniuj, które atrybuty są własnością IdP (np. status active, email/username, pola imienia i nazwiska) i stosuj ich aktualizacje automatycznie. Pola specyficzne dla aplikacji (preferencje, wewnętrzne notatki) przypisz aplikacji, żeby aktualizacje SCIM nie nadpisywały lokalnych danych.
Zacznij od małego pilota w środowisku nieprodukcyjnym i utwórz konto awaryjne (break‑glass) poza SCIM, by odzyskać dostęp, jeśli coś pójdzie nie tak. Testuj create, update (szczególnie zmiany emaila), deactivate i reactivate, i upewnij się, że zawsze aktualizujesz ten sam rekord użytkownika, a nie tworzysz duplikatu.
Najczęstsze przyczyny to dopasowywanie tylko po emailu, brak wymaganych atrybutów przy tworzeniu albo provisionowanie tej samej osoby z dwóch miejsc (ręczne zaproszenia plus SCIM albo wiele IdP). Rozwiązanie to wybranie jednego autorytatywnego ID, wstrzymanie provisioningu dla problematycznych kont i ponowne powiązanie tożsamości zamiast automatycznego scalania.
Domyślnie stosuj zasadę najmniejszych uprawnień: twórz konto z minimalnym lub żadnym dostępem, a potem przyznawaj uprawnienia dopiero po otrzymaniu oczekiwanych grup lub ról. Jeśli dane o grupach są opóźnione lub brakujące, traktuj to jako „brak dostępu” zamiast zgadywać. Dezaktywacja powinna zawsze przerywać dostęp niezależnie od członkostwa w grupach.


