Synchronizace uživatelů

Cílem tohoto dokumentu je seznámit vývojáře aplikací a partnery se základními principy jednotné identity a synchronizace systémů pomocí služby SkolniLogin.cz.

Na obrázku jsou znázorněné tři různé scénáře integrace s aplikacemi třetích stran (RP = relying party). Popis naleznete níže.

Pro napojení externích systémů je možné využít mnoho možností. Některé z nich umožňují sjednocení identity i s aplikacemi, do kterých není možné zasahovat a upravovat je.

Reaktivní

Většinu synchronizační logiky zajišťuje externě SkolniLogin.cz.

RP2

Integrace podle RP2 scénáře nevyžaduje žádné nebo pouze minimální zásahy do aplikace. Využívá dvou komponent, které zajišťují veškerou synchronizační logiku a přihlašování. Většinou se služba připojuje přímo

RP3

Pro systémy, které jsou provozované v lokální síti, a není možné je upravit tak, aby se napojily na online API (SL-API), využíváme nástroj SL-SYNC, který je nainstalovaný na některém z lokálních serverů (zpravidla na doménovém řadiči kvůli Active Directory).

Proaktivní

RP1

Aplikace aktivně využívá SL-API a případně odebírá informace o změnách ze SL-QS.

Zde naleznete popis veřejných součástí služby SkolniLogin.cz. Třetí strana může využít některé komponenty k integraci. Například evidenční systém může využívat pouze SL-API pro vytváření uživatelů a SL-STS pro jejich přihlašování, protože je hlavním zdrojem identit a vyžaduje pouze jednosměrnou syncronizaci.

SL-STS (Security Token Service)

Služba, která se stará autentizaci a autorizaci. Přiděluje klientům přístupové tokeny, které řídí veškeré interní i externí ověřování služby. Aktuálně podporujeme protokol OAuth 2.0 a plánujeme zavést OpenID Connect, který je na tomto protokolu postavený. Dále nabízí jedno centrální místo pro self-service nastavení hesla a profilového obrázku. Interaktivní session umožňuje při každém ověření kontrolu platnosti session v Azure AD i jednotné odhlášení Single-Sign-Out (aplikace přesměrují uživatele na https://muj.skolnilogin.cz/logout a během odhlášení ve skrytých prvcích iframe proběhne odhlášení ze všech aplikací, do kterých má uživatel přístup).

Ověření pomocí interaktivní session

Ověření confidential klienta (server)

 

Pro ověření aplikace nabízíme připravené knihovny pro různé programovací jazyky a frameworky. S požadavky se prosím obraťte na podpora@skolnilogin.cz.

 

Ukázka dialogů authorizačního serveru.

SL-API

Jednotné REST rozhraní pro komunikaci externích systémů i interních komponent. Veškeré požadavky musí mít hlavičku Authorization, ve které klient zašle přístupový token, který získá od SL-STS.

 

Příklad požadavku na zjištění informací o aktuálně přihlášeném uživateli:

GET https://api.skolnilogin.cz/1.0/me   HTTP/1.1
Authorization: Bearer 12c81afc680f4df4aa74cb148150b4e0

Seznam endpointů API

 

SL-QS (Queue Service)

Komponenta, která zajišťuje propagaci událostí mezi systémy a opakovací logiku. Využíváme Microsoft Azure Queue Storage.

Každý klient (aplikace) získává zprávy z o událostech z fronty. Hlavní výhodou tohoto řešení je ošetření chybových stavů a opakovací logika..

Zpráva, kterou klient získá z fronty se stane ve frontě neviditelnou pro ostatní odběratele (např. jiné instance aplikace) této fronty. Výchozím nastavením je neviditelnost po dobu 30 vteřin. Nasledně se ve frontě objeví znovu, pokud klient nezašle potvrzení o úspěšném zpracování.

 

Ověření odběratele proti frontě probíhá pomocí Shared Access Signature, který pro klienta vygeneruje SL-API.

 

Klientská aplikace přistupuje přímo bez prostředníka ke službě Azure Storage pomocí SAS.

SL-SYNC

Tento nástroj zajišťuje integraci se systémy v perimetru lokální sítě (které si zákazník provozuje na vlastní infrastruktuře). Integrace zde spočívá ve vytvoření konektoru na databázi aplikace. Data z napojeného systému jsou zasílána do SL-CSE (viz. dále) a změny jsou do něj promítány na základě událostí ze SL-QS.

Instalace a propojení s Active Directory

SL-ARP (Authentication Reverse Proxy)

Reverzní proxy, která zajišťuje přihlášení a odhlášení z webových aplikací bez nutnosti jejich úpravy. Proces využívá našeho serveru v roli prostředníka.

Mimo automatické přihlášení nabízí lepší pokrytí zátěže, SSL zabezpečení, ochranu před DDoS útoky a kompresi souborů. Přihlašovací údaje jsou zašifrovány pomocí AES a uloženy v Azure AD.

Pokud je aplikace napojená na SL-CSE a je zapnuta synchronizace hesel, uživatel je přihlášen zcela automaticky. V případě, že je využita pouze proxy, uživatel musí při prvním přístupu do cílové aplikace zadat svoje heslo.

Služba je připravená i na pokročilé přihlašovací mechanismy.

 

 

SL-LAUNCHER

Pro umožnění jednotného přístupu i do desktopových aplikací jsme připravili spouštěč Win32 aplikací, který poskytne jednotné přihlášení podobným způsobem, jako SL-ARP. Po propojení s lokální Windows účtem umožňuje automaticé přihlášení bez nutnosti zadávat heslo i v případě, kdy je klient offline.

SL-CSE (Coexistence Sync Engine)

Služba, která periodicky získává seznam uživatelů a porovnává jej se stavem při předchozí synchronizaci. Po porovnání kontrolních součtů promítne detekované změny pomocí volání SL-API. Pro synchronizaci uživatelů je pro všechny systémy stejný kód, pro synchronizaci dalších atributů (např. pro single sign on do systému s Bakaláři) je rozšířen o nadstavbu, která tuto funkcionalitu zastřešuje.

Klientská aplikace může volat veškeré endpointy Microsoft Graph (jednotné API pro online služby Microsoftu) v kontextu přihlášeného uživatele pomocí SL-API bez nutnosti dalšího ověření. Toto lze využít například pro jednoduchou integraci aplikace na Office 365 (kalendář, soubory, OneNote, …). V případě zájmu o konzultaci možností nás prosím kontaktujte.

Příklad požadavku na získání událostí z kalendáře aktuálně přihlášeného uživatele:

GET https://api.skolnilogin.cz/1.0/msgraph/me/calendar/events   HTTP/1.1
Authorization: Bearer 12c81afc680f4df4aa74cb148150b4e0

Abychom mohli zajistit plynulý přechod na nový systém identit, bylo nutné připravit proces párování nových a existujících účtů. Zdrojový repozitář identit (evidenční systém) může využít speciální endpoint (+ initialcoexistencesync) pro úvodní nebo opravnou synchronizaci (v případě ztráty integrity). Změny se ihned nepromítnou, ale správce tenantu je musí po kontrole v administraci odsouhlasit.

Často jsme se setkávali s chybami v údajích o uživatelích a následně jsme měli problémy s párováním nově vzniklých identit (tak aby uživatel nepoznal změnu a nepřišel o data). Proto jsme připravili několik mechanismů, které se z dostupných informací snaží najít nejpřesnější shodu. U identit, kde je více možností, potom správce ručně vybere správnou volbu.

 

V příští verzi API plánujeme při implementaci využít definice SCIM 2, která umožní další integrační scénáře. Současně budeme podporovat autentizační standard OpenID Connect. Následně se budeme věnovat implementaci notifikační služby, která umožní aplikacím zobrazovat upozornění a další zprávy v jednotném uživatelském portálu.