SSO nĂ« arkitekturĂ«n mikroservisore. PĂ«rdorim Keycloak. Pjesa №1

NĂ« çdo kompani tĂ« madhe, dhe X5 Retail Group nuk bĂ«n pĂ«rjashtim, me kalimin e kohĂ«s rritet numri i projekteve ku kĂ«rkohet autorizimi i pĂ«rdoruesve. Me kalimin e kohĂ«s, nevojitet njĂ« kalim pa pengesa i pĂ«rdoruesve nga njĂ« aplikacion nĂ« tjetrin dhe atĂ«herĂ« lind nevoja pĂ«r pĂ«rdorimin e njĂ« serveri tĂ« vetĂ«m pĂ«r Identifikimin dhe Autorizimin e PĂ«rdoruesve (Single-Sign-On - SSO). Por si tĂ« veprohet, kur ofrues tĂ« tillĂ« identifikimi si AD apo tĂ« tjerĂ«, qĂ« nuk disponojnĂ« atribute shtesĂ«, pĂ«rdoren tashmĂ« nĂ« projekte tĂ« ndryshme. KĂ«tu vjen ndihma nga njĂ« klasĂ« sistemesh tĂ« quajtur "borker identifikimi". MĂ« funksionalĂ«t janĂ« pĂ«rfaqĂ«suesit e tij, si Keycloak, Gravitee Access management etj. ScenarĂ«t e pĂ«rdorimit shpesh mund tĂ« jenĂ« tĂ« ndryshĂ«m: ndĂ«rveprimi makinĂ«-makine, pjesĂ«marrja e pĂ«rdoruesve, etj. Zgjidhja duhet tĂ« mbĂ«shtesĂ« njĂ« funksionalitet fleksibĂ«l dhe tĂ« shkallĂ«zueshĂ«m, i aftĂ« tĂ« bashkojĂ« tĂ« gjitha kĂ«rkesat nĂ« njĂ«, dhe zgjidhja e tillĂ« nĂ« kompaninĂ« tonĂ« aktualisht Ă«shtĂ« brokeri identifikues – Keycloak.

SSO nĂ« arkitekturĂ«n mikroservisore. PĂ«rdorim Keycloak. Pjesa №1

Keycloak Ă«shtĂ« njĂ« produkt me kod tĂ« hapur, i destinuar pĂ«r identifikimin dhe kontrollin e aksesit, dhe mbĂ«shtetet nga kompania RedHat. Ai Ă«shtĂ« baza pĂ«r produktet e kompanisĂ« qĂ« pĂ«rdorin SSO – RH-SSO.

Konceptet themelore

Para se të filloni të hulumtoni zgjidhjet dhe qasjet, duhet të përcaktoni terminologjinë dhe rendin e proceseve:

SSO nĂ« arkitekturĂ«n mikroservisore. PĂ«rdorim Keycloak. Pjesa №1

Identifikimi — kjo Ă«shtĂ« procedura e njohjes sĂ« subjektit me identifikuesin e tij (thjesht, kjo Ă«shtĂ« pĂ«rcaktimi i emrit, username ose numrit).

Autentikimi – kjo Ă«shtĂ« procedura e verifikimit (pĂ«rdoruesi verifikohet me fjalĂ«kalim, emaili verifikohet me nĂ«nshkrim elektronik etj.)

Autorizimi – kjo Ă«shtĂ« ofrimi i aksesit nĂ« ndonjĂ« burim (pĂ«r shembull, nĂ« emailin elektronik).

Brokeri identifikues Keycloak

Keycloak — kjo Ă«shtĂ« njĂ« zgjidhje pĂ«r menaxhimin e identifikimit dhe aksesit me kod tĂ« hapur, e destinuar pĂ«r t'u pĂ«rdorur nĂ« informacionin e sistemit ku mund tĂ« pĂ«rdoren modelet e arkitekturĂ«s mikroshĂ«rbimeve.

Keycloak ofron funksione si: hyrje të vetme (SSO), identifikim brokeri dhe hyrje sociale në sistem, federatë përdoruesish, adaptorë klientësh, konsolën e administratorit dhe konsolën për menaxhimin e llogarive.

Funksionaliteti i bazës, i mbështetur në Keycloak:

  • Single-Sign On dhe Single-Sign Out pĂ«r aplikacione tĂ« shfletuesit.
  • MbĂ«shtetje pĂ«r OpenID/OAuth 2.0/SAML.
  • Identiteti i ShĂ«rbimit – autentikimi me ndihmĂ«n e ofruesve tĂ« identitetit tĂ« jashtĂ«m OpenID Connect ose SAML.
  • Login Social – mbĂ«shtetje pĂ«r Google, GitHub, Facebook, Twitter pĂ«r identifikimin e pĂ«rdoruesve.
  • Federimi i PĂ«rdoruesve – sinkronizimi i pĂ«rdoruesve nga serverĂ«t LDAP dhe Active Directory dhe ofrues tĂ« tjetĂ«r identiteti.
  • Bridge Kerberos – pĂ«rdorimi i serverit Kerberos pĂ«r autentikimin automatik tĂ« pĂ«rdoruesve.
  • Konsola e Administratorit — pĂ«r menaxhimin e centralizuar tĂ« konfigurimeve dhe parametrave tĂ« zgjidhjes pĂ«rmes Web-it.
  • Konsola e Menaxhimit tĂ« Llogarive – pĂ«r menaxhimin e pavarur tĂ« profilit tĂ« pĂ«rdoruesve.
  • Kostumizimi i zgjidhjes nĂ« bazĂ« tĂ« stilit tĂ« brendshĂ«m tĂ« kompanisĂ«.
  • Autentikimi 2FA – mbĂ«shtetje pĂ«r TOTP/HOTP me ndihmĂ«n e Google Authenticator ose FreeOTP.
  • Flukset e Kyçjes – regjistrimi i vetĂ«-pĂ«rdoruesve, rikuperimi dhe rivendosja e fjalĂ«kalimeve dhe mĂ« shumĂ«.
  • Menaxhimi i Sesioneve – administratorĂ«t mund tĂ« menaxhojnĂ« sesionet e pĂ«rdoruesve nga njĂ« pikĂ« qendrore.
  • Mappers e TokenĂ«ve – lidhja e atributeve tĂ« pĂ«rdoruesve, roleve dhe atributeve tĂ« tjera tĂ« nevojshme nĂ« tokenĂ«.
  • Menaxhimi fleksibĂ«l i politikave pĂ«rmes realm, aplikacionit dhe pĂ«rdoruesve.
  • MbĂ«shtetje CORS – adaptuesit e klientĂ«ve kanĂ« mbĂ«shtetje tĂ« brendshme pĂ«r CORS.
  • Interface tĂ« Ofruesve tĂ« ShĂ«rbimeve (SPI) – njĂ« sĂ«rĂ« SPI-sĂ«h, duke lejuar konfigurimin e aspekteve tĂ« ndryshme tĂ« funksionimit tĂ« serverit: fluxet e autentikimit, ofruesit e identitetit, pĂ«rputhja e protokolleve dhe shumĂ« mĂ« tepĂ«r.
  • Adaptuesit e klientĂ«ve pĂ«r aplikacionet JavaScript, WildFly, JBoss EAP, Fuse, Tomcat, Jetty, Spring.
  • MbĂ«shtetje pĂ«r punĂ«n me aplikacione tĂ« ndryshme qĂ« mbĂ«shtesin bibliotekĂ«n e OpenID Connect Relying Party ose bibliotekĂ«n e ShĂ«rbimit tĂ« Ofruesit SAML 2.0.
  • MundĂ«sia e zgjerimit duke pĂ«rdorur plugins.

Për proceset CI/CD, si dhe automatizimin e proceseve të menaxhimit në Keycloak, mund të përdoret REST API/JAVA API. Dokumentacioni është i disponueshëm në format elektronik:

REST API https://www.keycloak.org/docs-api/8.0/rest-api/index.html
JAVA API https://www.keycloak.org/docs-api/8.0/javadocs/index.html

Ofruesit e identitetit të nivelit të ndërmarrjes (On-Premise)

Mundësia për autentikimin e përdoruesve përmes shërbimeve të Federimit të Përdoruesve.

SSO nĂ« arkitekturĂ«n mikroservisore. PĂ«rdorim Keycloak. Pjesa №1

Gjithashtu, mund tĂ« pĂ«rdoret autentikimi i vazhdueshĂ«m – nĂ«se pĂ«rdoruesit autentikohen nĂ« stacionet e punĂ«s me Kerberos (LDAP ose AD), ata mund tĂ« autentikohen automatikisht nĂ« Keycloak pa pasur nevojĂ« tĂ« japin pĂ«rsĂ«ri emrin e pĂ«rdoruesit dhe fjalĂ«kalimin.

Për autentikimin dhe autorizimin e mëpasshëm të përdoruesve, është e mundur të përdoren një bazë e dhënash relacional, e cila është më e aplikueshme për mjediset e zhvillimit, pasi nuk kërkon konfigurime të zgjatura dhe integrime në fazat fillestare të projekteve. Për default, në Keycloak përdoret një bazë e dhënash e integruar për ruajtjen e konfigurimeve dhe të dhënave mbi përdoruesit.

Lista e bazave të dhënash të mbështetura është e gjerë dhe përfshin: MS SQL, Oracle, PostgreSQL, MariaDB, Oracle dhe të tjera. Aktualisht, më të testuarat janë Oracle 12C Release1 RAC dhe Galera 3.12 cluster për MariaDB 10.1.19.

Ofruesit e identifikimit — kyçja sociale

ËshtĂ« e mundur pĂ«rdorimi i kyçjes nga rrjetet sociale. PĂ«r aktivizimin e mundĂ«sisĂ« pĂ«r tĂ« autentifikuar pĂ«rdoruesit, pĂ«rdoret konsola e administratorit tĂ« Keycloak. Nuk kĂ«rkohen ndryshime nĂ« kodin e aplikacioneve dhe ky funksionalitet Ă«shtĂ« i disponueshĂ«m "nga kutia" dhe mund tĂ« aktivizohet nĂ« çdo fazĂ« tĂ« realizimit tĂ« projektit.

SSO nĂ« arkitekturĂ«n mikroservisore. PĂ«rdorim Keycloak. Pjesa №1

Për autentikimin e përdoruesve, është e mundur të përdoren ofruesit e identitetit OpenID/SAML.

Skenarët tipik të autorizimit me përdorimin e OAuth2 në Keycloak

Fluksi i Kodit tĂ« Autorizimit — pĂ«rdoret me aplikacionet server-side. NjĂ« nga llojet mĂ« tĂ« zakonshme tĂ« lejes pĂ«r autorizim, pasi Ă«shtĂ« shumĂ« i pĂ«rshtatshĂ«m pĂ«r aplikacionet server-side, nĂ« tĂ« cilat kode burimi i aplikacionit dhe tĂ« dhĂ«nat e klientit nuk janĂ« tĂ« aksesueshme pĂ«r tĂ« tjerĂ«t. Procesi nĂ« kĂ«tĂ« rast Ă«shtĂ« i ndĂ«rtuar mbi ridrejtimin (redirection). Aplikacioni duhet tĂ« jetĂ« nĂ« gjendje tĂ« ndĂ«rveprojĂ« me agjentĂ«t e pĂ«rdoruesit (user-agents), siç Ă«shtĂ« shfletuesi i internetit — pĂ«r tĂ« marrĂ« kodet e autorizimit tĂ« API qĂ« ridrejtohen pĂ«rmes agjentĂ«ve tĂ« pĂ«rdoruesve.

Fluksi Implicit — pĂ«rdoret nga aplikacionet mobile ose web (aplikacione qĂ« punojnĂ« nĂ« pajisjen e pĂ«rdoruesit).

Tipi implicit i autorizimit përdoret nga aplikacionet mobile dhe web, ku privatësia e klientit nuk mund të garantohet. Ky tip autorizimi gjithashtu përdor ridrejtime të agjentit të përdoruesit, ku access token-i i kalon agjentit të përdoruesit për përdorim të mëvonshëm në aplikacion. Kjo e bën token-in të disponueshëm për përdoruesin dhe aplikacione të tjera në pajisjen e përdoruesit. Me këtë tip autorizimi nuk realizohet verifikimi i vërtetësisë së aplikacionit, dhe procesi mbështetet në URL-në e ridrejtuar (e regjistruar më parë në shërbim).

Implicit Flow nuk mbështet token-at e rinovimit (refresh tokens).

Fluksi i Akrediteve tĂ« Klientit — pĂ«rdoret kur aplikacioni qasje nĂ« API. Ky tip autorizimi zakonisht pĂ«rdoret pĂ«r ndĂ«rveprime "server-server", tĂ« cilat duhet tĂ« kryhen nĂ« sfond pa ndĂ«rveprim tĂ« menjĂ«hershĂ«m me pĂ«rdoruesin. Fluksi i akrediteve tĂ« klientit lejon shĂ«rbimet nĂ« internet (klientĂ« konfidencialĂ«) tĂ« pĂ«rdorin akreditimet e tyre nĂ« vend tĂ« identifikimit tĂ« pĂ«rdoruesit pĂ«r verifikim kur thirrin njĂ« shĂ«rbim tjetĂ«r nĂ« internet. PĂ«r njĂ« nivel mĂ« tĂ« lartĂ« sigurie, shĂ«rbimi qĂ« thĂ«rret mund tĂ« pĂ«rdorĂ« njĂ« certifikatĂ« (nĂ« vend tĂ« sekretit tĂ« zakonshĂ«m) si akreditim.

Specifikimi OAuth2 përshkruhet në
RFC-6749
RFC-8252
RFC-6819

Token-i JWT dhe përfitimet e tij

JWT (JSON Web Token) është një standard i hapur (https://tools.ietf.org/html/rfc7519), i cili përcakton një mënyrë kompakte dhe autonome për transmetimin e sigurt të informacionit midis palëve në formën e një objekti JSON.

Sipas standardit, token-i pĂ«rbĂ«het nga tre pjesĂ« nĂ« format base-64, tĂ« ndara me pika. Pjesa e parĂ« quhet header, ku pĂ«rmban tipin e token-it dhe emrin e algoritmit tĂ« hash pĂ«r marrjen e nĂ«nshkrimit digjital. Pjesa e dytĂ« ruan informacionin kryesor (pĂ«rdoruesi, atributet etj.). Pjesa e tretĂ« – nĂ«nshkrimi digjital.

..
Kurrë mos e ruani token-in në databazën tuaj. Sepse një token i vlefshëm është ekuivalent me një fjalëkalim, ruajtja e token-it është njësoj si të ruani një fjalëkalim në mënyrë të hapur.
Access-token — Ă«shtĂ« njĂ« token qĂ« i jep akses pronarit tĂ« tij nĂ« burimet e mbrojtura tĂ« serverit. Zakonisht, ai ka njĂ« kohĂ«zgjatje tĂ« shkurtĂ«r dhe mund tĂ« pĂ«rmbajĂ« informacione shtesĂ«, si adresa IP e palĂ«s qĂ« po kĂ«rkon kĂ«tĂ« token.

Token rifreskimi — Ă«shtĂ« njĂ« token qĂ« i lejon klientĂ«ve tĂ« kĂ«rkojnĂ« tokene tĂ« reja tĂ« aksesit pasi tĂ« jetĂ« e skaduar koha e tyre. KĂ«to tokene zakonisht lĂ«shohen pĂ«r njĂ« periudhĂ« tĂ« gjatĂ«.

Pikat kryesore të përfitimeve të aplikimit në arkitekturën mikroserviz:

  • MundĂ«sia pĂ«r tĂ« aksesuar aplikacione dhe shĂ«rbime tĂ« ndryshme pĂ«rmes njĂ« autentifikimi tĂ« vetĂ«m.
  • NĂ« mungesĂ« tĂ« njĂ« sĂ«rĂ« atributesh tĂ« nevojshme nĂ« profilin e pĂ«rdoruesve, Ă«shtĂ« e mundur tĂ« pasurohet me tĂ« dhĂ«na qĂ« mund tĂ« shtohen nĂ« ngarkesĂ«n e dobishme, madje dhe automatizuar dhe "nĂ« flakĂ«".
  • Nuk ka nevojĂ« tĂ« ruhet informacioni rreth seancave aktive, aplikacioni server duhet vetĂ«m tĂ« kontrollojĂ« nĂ«nshkrimin.
  • Menaxhim mĂ« fleksibĂ«l tĂ« aksesit pĂ«rmes atributesh shtesĂ« nĂ« ngarkesĂ«n e dobishme.
  • PĂ«rdorimi i nĂ«nshkrimit tĂ« tokenit pĂ«r kokĂ«n dhe ngarkesĂ«n e dobishme rrit sigurinĂ« e zgjidhjes nĂ« tĂ«rĂ«si.

Tokeni JWT — pĂ«rbĂ«rja

Header-i — me default, koka pĂ«rmban vetĂ«m llojin e tokenit dhe algoritmin qĂ« pĂ«rdoret pĂ«r enkriptimin.

Lloji i tokenit ruhet nĂ« çelĂ«sin "typ". ÇelĂ«si "typ" injorohet nĂ« JWT. NĂ«se çelĂ«si "typ" Ă«shtĂ« i pranishĂ«m, vlera e tij duhet tĂ« jetĂ« JWT pĂ«r tĂ« treguar se ky objekt Ă«shtĂ« njĂ« JSON Web Token.

ÇelĂ«si i dytĂ« "alg" pĂ«rcakton algoritmin qĂ« pĂ«rdoret pĂ«r enkriptimin e tokenit. Me default, ai duhet tĂ« vendoset nĂ« HS256. Koka kodifikohet nĂ« base64.

{ "alg": "HS256", "typ": "JWT"}
Ngarkesa (pĂ«rmbajtja) — nĂ« ngarkesĂ«n e dobishme ruhet çdo informacion qĂ« duhet tĂ« verifikohet. Çdo çelĂ«s nĂ« ngarkesĂ«n e dobishme njihet si "çështje". PĂ«r shembull, nĂ« aplikacion mund tĂ« hyni vetĂ«m me ftesĂ« (promovim i mbyllur). Kur duam tĂ« ftojmĂ« dikĂ« tĂ« marrĂ« pjesĂ«, i dĂ«rgojmĂ« atij njĂ« letĂ«r ftesĂ«. ËshtĂ« e rĂ«ndĂ«sishme tĂ« verifikohet se adresa e emailit i pĂ«rket personit qĂ« pranon ftesĂ«n, prandaj do ta pĂ«rfshijmĂ« kĂ«tĂ« adresĂ« nĂ« ngarkesĂ«n e dobishme, pĂ«r kĂ«tĂ« do ta ruajmĂ« nĂ« çelĂ«sin "e-mail".

{ "email": "example@x5.ru" }

ÇelĂ«sat nĂ« ngarkesĂ«n e dobishme mund tĂ« jenĂ« tĂ« rastit. MegjithatĂ«, ka disa tĂ« rezervuar:

  • iss (ShkĂ«putĂ«si) — pĂ«rcakton aplikacionin nga i cili dĂ«rgohet tokeni.
  • sub (Subjekti) — pĂ«rcakton temĂ«n e tokenit.
  • aud (Audience) – njĂ« array i vargjeve tĂ« ndjeshme ndaj regjistrit ose URI, qĂ« pĂ«rbĂ«n njĂ« listĂ« tĂ« marrĂ«sve tĂ« kĂ«tij tokeni. Kur pala marrĂ«se merr JWT me kĂ«tĂ« çelĂ«s, ajo duhet tĂ« kontrollojĂ« praninĂ« e saj te marrĂ«sit — nd otherwise ignore the token.
  • exp (Koha e skadimit) — tregon kur skadon afati i vlefshmĂ«risĂ« sĂ« tokenit. Standardi JWT kĂ«rkon qĂ« nĂ« tĂ« gjitha implementimet e tij, tokes me afat tĂ« skaduar tĂ« refuzohen. ÇelĂ«si Exp duhet tĂ« jetĂ« njĂ« shĂ«nim kohor nĂ« formatin unix.
  • nbf (Nuk pĂ«rpara) — kjo Ă«shtĂ« koha nĂ« formatin unix qĂ« pĂ«rcakton momentin kur tokeni do tĂ« bĂ«het i vlefshĂ«m.
  • iat (I lĂ«shuar nĂ«) — ky çelĂ«s pĂ«rfaqĂ«son kohĂ«n kur tokeni Ă«shtĂ« lĂ«shuar dhe mund tĂ« pĂ«rdoret pĂ«r tĂ« pĂ«rcaktuar moshĂ«n e JWT. ÇelĂ«si iat duhet tĂ« jetĂ« njĂ« shĂ«nim kohor nĂ« formatin unix.
  • Jti (ID e JWT) — njĂ« varg qĂ« pĂ«rcakton identifikuesin unik tĂ« kĂ«tij tokeni duke marrĂ« parasysh regjistrin.

ËshtĂ« e rĂ«ndĂ«sishme tĂ« kuptohet se ngarkesa e dobishme nuk transmetohet nĂ« formĂ« tĂ« enkriptuar (megjithatĂ«, tokenet mund tĂ« jenĂ« tĂ« ndara dhe atĂ«herĂ« Ă«shtĂ« e mundur tĂ« transmetohen tĂ« dhĂ«na tĂ« enkriptura). Prandaj, nuk mund tĂ« ruani asnjĂ« informacion sekret nĂ« tĂ«. Ashtu si titulli, ngarkesa e dobishme kodifikohet nĂ« base64.
NĂ«nshkrimi — kur kemi titullin dhe ngarkesĂ«n, mund tĂ« llogaritim nĂ«nshkrimin.

Marrim titullin dhe ngarkesĂ«n tĂ« kodifikuara nĂ« base64, ato pĂ«rzihen nĂ« njĂ« varg pĂ«rmes pikĂ«s. MĂ« pas ky varg dhe çelĂ«si sekret hyjnĂ« nĂ« algoritmin e enkriptimit tĂ« specifikuar nĂ« titull (çelĂ«si “alg”). ÇelĂ«si mund tĂ« jetĂ« çfarĂ«do vargu. KĂ«to vargje mĂ« tĂ« gjata do tĂ« jenĂ« mĂ« tĂ« preferuara, pasi do tĂ« nevojitet mĂ« shumĂ« kohĂ« pĂ«r t'u zbuluar.

{"alg":"RSA1_5", "payload":"A128CBC-HS256"}

Ndërtimi i arkitekturës së klasterit të qëndrueshëm të Keycloak

Kur përdorim një klaster të vetëm për të gjithë projektet, kërkesat për zgjidhjen e SSO rriten. Kur numri i projekteve nuk është i madh, këto kërkesa nuk janë aq të ndjeshme për të gjitha projektet, megjithatë me rritjen e numrit të përdoruesve dhe integrimeve, kërkesat për disponueshmërinë dhe performancën rriten.

Rritja e riskut të dështimit të SSO-së së vetme rrit kërkesat ndaj arkitekturës së zgjidhjes dhe metodave të përdorura për ruajtjen e komponentëve dhe çon në një SLA shumë të ashpër. Për këtë arsye, shpesh në zhvillimin ose në fazat e hershme të implementimit të zgjidhjeve, projektet kanë infrastrukturen e tyre jo të çrregullt. Me kalimin e kohës, është e nevojshme të parashikohet mundësia e zhvillimit dhe shkallëzimit. Një klaster i qëndrueshëm mund të ndërtohet më fleksibël duke përdorur virtualizimin e konteinerëve ose një qasje hibride.

PĂ«r tĂ« punuar nĂ« modalitetet Active/Active dhe Active/Passive, klasteri kĂ«rkon tĂ« sigurojĂ« konsistencĂ«n e tĂ« dhĂ«nave nĂ« njĂ« bazĂ« tĂ« dhĂ«nash relazionale — tĂ« dy node-t e bazĂ«s sĂ« tĂ« dhĂ«nave duhet tĂ« replikohen sinhronisht midis Qendrave tĂ« tĂ« DhĂ«nave me shpĂ«rndarje gjeografike.

Shembulli më i thjeshtë i një instalimi të qëndrueshëm.

SSO nĂ« arkitekturĂ«n mikroservisore. PĂ«rdorim Keycloak. Pjesa №1

Cilat janë avantazhet e përdorimit të një klasteri të vetëm:

  • DisponueshmĂ«ri e lartĂ« dhe performancĂ«.
  • MbĂ«shtetje pĂ«r modalitetet e punĂ«s: Active/Active, Active/Passive.
  • MundĂ«si pĂ«r shkallĂ«zim dinamik — kur pĂ«rdoret virtualizimi i konteinerĂ«ve.
  • MundĂ«si pĂ«r menaxhim dhe monitorim tĂ« centralizuar.
  • Qasje e vetme pĂ«r identifikimin/authentifikimin/autorizimin e pĂ«rdoruesve nĂ« projekte.
  • NdĂ«rveprimi mĂ« i qartĂ« midis projekteve tĂ« ndryshme pa pjesĂ«marrjen e pĂ«rdoruesve.
  • MundĂ«sia e ripĂ«rdorimit tĂ« tokenit JWT nĂ« projekte tĂ« ndryshme.
  • Pika e vetme e besueshmĂ«risĂ«.
  • Start mĂ« tĂ« shpejtĂ« tĂ« projekteve duke pĂ«rdorur mikroshĂ«rbimet/virtualizimin e konteinerĂ«ve (nuk kĂ«rkohet ngritja dhe konfigurimi i komponenteve shtesĂ«).
  • MundĂ«sia e blerjes sĂ« mbĂ«shtetjes komerciale nga shitĂ«si.

ÇfarĂ« duhet tĂ« merrni parasysh kur planifikoni klasterin

DBMS

Keycloak përdor një sistem menaxhimi DBMS për të ruajtur: realms, clients, users etj.
MbĂ«shtetet njĂ« gamĂ« e gjerĂ« DBMS: MS SQL, Oracle, MySQL, PostgreSQL. Keycloak vjen me njĂ« bazĂ« tĂ« dhĂ«nash relazionale tĂ« integruar. PĂ«rdorimi rekomandohet pĂ«r mjediset qĂ« nuk ngarkohen — siç janĂ« mjediset e zhvillimit.

Për të punuar në modalitetet Active/Active dhe Active/Passive, klasteri kërkon të sigurojë konsistencën e të dhënave në një bazë të dhënash relazionale dhe të dy node-t e klasterit të bazës së të dhënave replikohen sinhronisht midis Qendrave të të Dhënave.

Cache i shpërndarë (Infinspan)

Për funksionimin e duhur të klasterit kërkohet sinkronizimi shtesë i këtyre llojeve të caches duke përdorur JBoss Data Grid:

Seancat e autentifikimit — pĂ«rdoren pĂ«r ruajtjen e tĂ« dhĂ«nave gjatĂ« autentifikimit tĂ« njĂ« pĂ«rdoruesi tĂ« caktuar. KĂ«rkesat nga ky cache zakonisht pĂ«rfshijnĂ« vetĂ«m shfletuesin dhe serverin Keycloak, jo aplikacionin.

Tokenat e veprimit — pĂ«rdoren pĂ«r skenarĂ«t kur pĂ«rdoruesi duhet tĂ« konfirmojĂ« njĂ« veprim asinkronisht (pĂ«rmes emailit). PĂ«r shembull, gjatĂ« procesit tĂ« rikuperimit tĂ« fjalĂ«kalimit, cache i actionTokens Infinispan pĂ«rdoret pĂ«r tĂ« ndjekur metadata mbi tokenat e lidhur me veprimet qĂ« tashmĂ« janĂ« pĂ«rdorur, prandaj nuk mund tĂ« pĂ«rdoren sĂ«rish.

Caching dhe invalidimi i tĂ« dhĂ«nave tĂ« pĂ«rhershme – pĂ«rdoret pĂ«r keshimin e tĂ« dhĂ«nave tĂ« pĂ«rhershme, pĂ«r tĂ« shmangur kĂ«rkesat e panevojshme ndaj bazĂ«s sĂ« tĂ« dhĂ«nave. Kur ndonjĂ« server Keycloak pĂ«rditĂ«son tĂ« dhĂ«nat, tĂ« gjithĂ« serverĂ«t e tjerĂ« Keycloak nĂ« tĂ« gjitha qendrat e tĂ« dhĂ«nave duhet tĂ« dinĂ« pĂ«r kĂ«tĂ«.

Puna — pĂ«rdoret vetĂ«m pĂ«r dĂ«rgimin e mesazheve mbi pavlefshmĂ«rinĂ« mes nyjave tĂ« klasterit dhe qendrave tĂ« tĂ« dhĂ«nave.

Seancat e pĂ«rdoruesve — pĂ«rdoren pĂ«r ruajtjen e tĂ« dhĂ«nave mbi seancat e pĂ«rdoruesve, qĂ« janĂ« tĂ« vlefshme gjatĂ« seancĂ«s sĂ« shfletuesit tĂ« pĂ«rdoruesit. Cache duhet tĂ« pĂ«rpunojĂ« kĂ«rkesat HTTP nga pĂ«rdoruesit pĂ«rfundimtarĂ« dhe aplikacioni.

Mbrojtja nga forcat e kĂ«qija — pĂ«rdoret pĂ«r tĂ« ndjekur tĂ« dhĂ«nat mbi hyrjet e dĂ«shtuara.

Balancimi i ngarkesës

Balancuesi i ngarkesës është pika e vetme e hyrjes në keycloak dhe duhet të mbajnë seanca të ngjitur.

Serverët e aplikacioneve

Përdoren për të kontrolluar ndërveprimin e komponentëve me njëri-tjetrin dhe mund të jenë të virtualizuar ose të kontejnerizuar duke përdorur mjetet ekzistuese të automatizimit dhe shkallëzimit dinamik të infrastrukturës. Skenarët më të zakonshëm të implementimit në OpenShift, Kubernates, Rancher.

KĂ«tu pĂ«rfundon pjesa e parĂ« – teorike. NĂ« ciklet e ardhshme tĂ« artikujve do tĂ« shqyrtohen shembuj integrimesh me ofrues tĂ« ndryshĂ«m identifikimi dhe shembuj tĂ« konfigurimeve.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster