Systems - DB: Source of identities

This tutorial deals with how to connect an authoritative (primary) system as a source of identities. To this end, the basic Database Table Connector will come in handy. The source table we are going to use consists of 4 columns: id, username, first name, and last name.

First, click on the Add button on the Systems tab item. Pick a system name, say, Some base. Check the ReadOnly checkbox field – your database is to serve as a source of data only, you don't actually wish to be able to write to it. Keep other attributes of the system as they are by default. Then click on the Save and continue button.

Connector configuration

Go to the Configuration tab and select the Database Table Connector (connId). Next, enter the path to the DB and the user login that IdM will use to get access the DB. This user must be authorized to read the connected table, as a minimum. Specific settings in our example:

TODO translate to ENG
  • Host = localhost – DB nám běží na stejném serveru jako IdM
  • Port = 5432 – standardní port pro PostgreSQL
  • User = idmadmin – dříve vytvořený uživatel v DB s dostatečným oprávněním na čtení dat
  • User Password = %%%%%%%%* - zde je hodnota hesla pro DB uživatele zadaného v předchozím kroku
  • Table = users – v DB jsme si předpřipravili tabulku s názvem users,ze které budeme synchronizovat uživatele do CzechIdM
  • Key Column = id - Database Table Connector (connId)vyžaduje explicitní vyznačení sloupce, který je v DB použit jako unikátní identifikátor. Typicky se jedná o primární klíč tabulky.
  • JDBC Connection URL = jdbc:postgresql://localhost:5432/Somebase – udává cestu k DB
  • JDBC Driver = org.postgresql.Driver – konektor podporuje více různých typů relačních databází. V našem případě napojujeme DB PostgreSql. Pro napojení je třeba v CzechIdM nastavit ovladač, který zajistí operace s daným typem databáze.

V době psaní tohoto návodu lze driver pro PostgreSql stáhnout zde https://jdbc.postgresql.org/download.html

Kromě nastavení v konfiguraci systému v CzechIdM je potřeba soubor s ovladačem umístit do umístění pro knihovny aplikačního serveru. V našem případě běží CzechIdM v AS Tomcat, tedy driver umístíme do složky lib. Případně můžeme umístit driver do WEB-INF/lib přímo v umístění aplikace CzechIdM.

Ostatní atributy konektoru necháme nevyplněné nebo s výchozí předvyplněnou hodnotou.

Pokud jsme vše správně nastavili a CzechIdM má přístup do naší DB, můžeme konfiguraci ověřit kliknutím na zelené tlačítko Test konektoru na začátku stránky.

Schéma DB systému

Přejdeme na záložku Schéma systému (popsáno v kapitole 2.3.2) a klikneme na tlačítko Generovat schema. Konektor nám automaticky vrátí seznam dostupných atributů na napojovaném systému. Objekt vrácený z konektoru je ve výchozím stavu typu __ACCOUNT__, což nám pro napojení identit vyhovuje. Dále konektor vrátil podle očekávání 4 atributy dle našich sloupečků v DB. Ty zobrazíme kliknutím na obrázek lupy vedle typu objektu.

Navíc nám konektor ale vrátil atribut __NAME__, který je definován standardem ConnId. Námi použitá implementace Database Table Connector (connId) se této specifikace drží, avšak pro synchronizaci jej nepoužívá, proto pro naše načítání dat ze zdrojového systému jej nebudeme potřebovat.

Kliknutím na lupu vedle názvu atributu je možné zobrazit detaily konfigurace pro konkrétní atribut.

 \\
Obrázek 22: Detail atributu ve schématu systému

V našem případě mají všechny atributy stejnou konfiguraci až na atribut id a __NAME__, které jsou označeny jako povinné.

Mapování synchronizace pro DB

Máme-li připravené schéma systému, pak přikročíme k mapování synchronizace. To nám umožní určit, jaké atributy z dostupného schématu nasynchronizujeme do IdM a také do kterých atributů Identity se budou atributy z účtu plnit.

Na záložce mapování atributů stiskneme tlačítko Přidat.Vyplníme

  • Typ operace = Synchronizace
  • Název mapování = users – naše označení této sychronizace. Systém může mít více různých synchronizací.
  • Název objektu = %%ACCOUNT%% - typ objektu, který chceme synchronizovat.
  • Typ IdM entity = Identita – typ entity, na kterou se bude mapovat typ objektu vybraný v předchozím bodu.

Po vytvoření mapování klikneme na detail tohoto mapování a nastavíme konkrétní vazby atributů účtu na atribut identity. Nastavíme mapování pro všechny naše atributy id, name, surname, username.

fig:Například atribut id nastavíme dle následujícího obrázku. Ostatní atributy nastavím stejně až na položky

  • Je identifikátorem, která je zaškrtnuta pouze pro id.
  • Atribut entity – říká, že atribut ze systému pošleme k základnímu atributu entity v CzechDIM. Vyplníme jej u všech položek kromě id.
  • IdM klíč – definuje který atribut entity v CzechIdM bude daný atribut ze systému plnit. Tato volba je dosupná pouze pokud jsme předtím zaškrtli volbu Atribut entity. Dle obrázku výše namapujeme atributy name, surname a username na atributy v CzechIdM firstName, lastName a username.

Jak je vidět, ne všechny atributy musíme mapovat na atribut v CzechIdM. Ty, které nenamapujeme, nebudou vyplněny k entitě v CzechIdM. V našem případě se k entitě nepřenese id, které nechceme dále využívat, ani jej neplánujeme posílat do spravovaných systémů.

V našem příkladu jsme namapovali atributy účtu na systému na základní atributy Identity. Každá entita v CzechIdM má základní sadu atributů, které však lze rozšířit. Chceme-li v synchronizaci namapovat atributy na rozšířené atributy entit v CzechIdM musíme mít nejprve přichystán formulář EAV atributů pro danou entitu, viz kapitola 2.10.

Nastavení synchronizace

V předchozí kapitole jsme si připravili mapování atributů pro synchronizaci. Nyní nastavíme samotný proces synchronizace, který toto mapování bude používat.

Přejdeme na záložku Synchronizace a klikneme na tlačítko přidat. V synchronizaci vyplníme název a povolíme ji dle obrázku. Rekoncilace můžeme zaškrtnout také, budeme načítat všechny účty bez omezení. Do sady mapovacích atributů vybereme mapování users, které jsme si vytvořili v minulé kapitole.

Dále přejdeme ve formuláři až k nastavení operací pro jednotlivé stavy účtu a entity a nastavíme následujícím způsobem:

  • Vazba existuje, akce = Aktualizovat entitu – Tím zajistíme, že při opakovaném běhu synchronizace, kdy jsou již v CzechIdM uloženy vazby účet (koncový systém)identita (CzechIdM), budou přeneseny změny účtů do entity v CzechIdM
  • Vazba neexistuje, korelační atribut = id, akce = Vytvořit vazbu – Tím zajistíme, že při opakovaných bězích se prolinkují všechny účty a entity, které mají stejné id.
  • Entita neexistuje, akce = vytvořit entitu - Tím zajistíme, že při všech bězích se nám v CzechIdM vytvoří entity, které tam do té doby neexistovaly, dle účtů na systému.
  • Účet neexistuje, akce = Ignorovat – Nechceme provádět žádnou akci, pokud existuje entita v IdM a účet neexistuje. Systém je pro nás pouze zdroj dat.

Položky Workflow necháme nevyplněny, ty slouží pro pokročilé skriptování u jednotlivých akcí.

Na podzáložce Filtr nenastavujeme nic, nechceme omezovat synchronizaci pouze na některé účty. A záložka Logy je pouze informativní a obsahuje auditní log synchronizace.

Spuštění synchronizace a log

Pokud jsme úspěšně prošli nastavením v předchozích kapitolách, můžeme nyní přistoupit ke spuštění samotné Synchronizace. Přejdeme na záložku Napojené systémy, vybereme náš nakonfigurovaný systém a přejdeme na záložku Synchronizace. Synchronizaci spustíme zeleným tlačítkem se znakem trojúhelníku na konci řádku s konfigurací synchronizace.

Běžící synchronizace mají vyplněn sloupeček Běží. Pokud přejdeme na detail běžící synchronizace (kliknutím na znak lupa) a poté přejdeme na záložku Logy, vidíme přehled všech synchronizací, včetně aktuálně běžících.