SSO momba ny maritrano microservice. Mampiasa Keycloak izahay. Fizarana faha-1

Ao amin'ny orinasa lehibe rehetra, ary ny X5 Retail Group dia tsy maningana, rehefa mandroso ny fampandrosoana, dia mitombo ny isan'ny tetikasa mitaky fanomezan-dΓ lana ho an'ny mpampiasa. Rehefa mandeha ny fotoana dia ilaina ny fifindran'ny mpampiasa avy amin'ny fampiharana iray mankany amin'ny iray hafa ary ilaina ny mampiasa mpizara Single-Sing-On (SSO) tokana. Fa inona no tokony hatao raha efa ampiasaina amin'ny tetikasa isan-karazany ny mpamatsy famantarana toy ny AD na ny hafa izay tsy manana toetra fanampiny. Ny kilasy rafitra antsoina hoe "mpikaroka momba ny maha-izy azy" dia ho tonga hamonjy. Ny tena miasa dia ny solontenany, toy ny Keycloak, ny fitantanana ny Gravitee Access, sns. Matetika, ny toe-javatra fampiasana dia mety ho samy hafa: ny fifandraisan'ny milina, ny fandraisan'anjaran'ny mpampiasa, sns. ary vahaolana toy izany Ny orinasanay izao dia manana broker famantarana - Keycloak.

SSO momba ny maritrano microservice. Mampiasa Keycloak izahay. Fizarana faha-1

Keycloak dia loharano misokatra sy vokatra fanaraha-maso ny fidirana tazonin'ny RedHat. Izy io no fototry ny vokatra avy amin'ny orinasa mampiasa SSO - RH-SSO.

Fotokevitra fototra

Alohan'ny hanombohanao hahatakatra ny vahaolana sy ny fomba fiasa dia tokony hamaritra ny teny sy ny filaharan'ny dingana ianao:

SSO momba ny maritrano microservice. Mampiasa Keycloak izahay. Fizarana faha-1

famantarana dia fomba iray hamantarana lohahevitra amin'ny alalan'ny famantarana azy (izany hoe mamaritra anarana, fidirana na isa).

fanamarinana - fomba fanamarinana ity (ny mpampiasa dia voamarina amin'ny fampiasana tenimiafina, ny taratasy dia voamarina amin'ny alΓ lan'ny sonia elektronika, sns.)

alΓ lana - dia manome fidirana amina loharano iray (ohatra, mailaka).

Keycloak Identity Broker

keycloak dia loharanom-baovao misokatra sy vahaolana amin'ny fitantanana ny fidirana natao hampiasaina amin'ny IS izay azo ampiasaina ny lamina maritrano microservice.

Keycloak dia manolotra endri-javatra toy ny Single Sign-On (SSO), Brokered Identity and Social Login, User Federation, Client Adapters, Admin Console, ary Account Management Console.

Fampiasa fototra tohana ao amin'ny Keycloak:

  • Single-Sign On sy Single-Sign Out ho an'ny fampiharana navigateur.
  • Fanohanana OpenID/OAuth 2.0/SAML.
  • Identity Brokering - fanamarinana amin'ny alΓ lan'ny OpenID Connect ivelany na mpamatsy famantarana SAML.
  • Fidirana ara-tsosialy - Google, GitHub, Facebook, Twitter fanohanana ny famantarana ny mpampiasa.
  • Federasiona mpampiasa - fampifanarahana ny mpampiasa avy amin'ny LDAP sy Active Directory mpizara ary mpamatsy famantarana hafa.
  • Kerberos tetezana - fampiasana mpizara Kerberos ho an'ny fanamarinan'ny mpampiasa mandeha ho azy.
  • Admin Console - ho an'ny fitantanana iraisan'ny fika sy ny masontsivana vahaolana amin'ny alΓ lan'ny Internet.
  • Account Management Console - ho an'ny fitantanana ny mombamomba ny mpampiasa tsy miankina.
  • Fanamboarana ny vahaolana mifototra amin'ny maha-orinasa ny orinasa.
  • Fanamarinana 2FA - Fanohanana TOTP/HOTP mampiasa Google Authenticator na FreeOTP.
  • Login Flows - fisoratana anarana ho an'ny tena mpampiasa, fanarenana ny tenimiafina ary famerenana, ary ny hafa dia azo atao.
  • Session Management - Afaka mitantana ny fotoam-piasan'ny mpampiasa amin'ny teboka tokana ny mpitantana.
  • Token Mappers - famatorana ny toetran'ny mpampiasa, ny andraikitra ary ny toetra ilaina hafa ho marika.
  • Fitantanana politika mora azo amin'ny alΓ lan'ny sehatra, fampiharana ary mpampiasa.
  • Fanohanana CORS - Ny adaptatera mpanjifa dia manana fanohanana CORS teratany.
  • Service Provider Interfaces (SPI) - SPI marobe izay ahafahanao manamboatra lafin-javatra isan-karazany amin'ny mpizara: fikorianan'ny fanamarinana, mpamatsy famantarana, sarintany protocol ary maro hafa.
  • Mpandrindra mpanjifa ho an'ny fampiharana JavaScript, WildFly, JBoss EAP, Fuse, Tomcat, Jetty, Spring.
  • Fanohanana hiasa amin'ny rindranasa isan-karazany izay manohana ny tranomboky OpenID Connect Relying Party na SAML 2.0 Service Provider Library.
  • Manitatra mampiasa plugins.

Ho an'ny fizotry ny CI/CD, ary koa ny automatique ny fizotran'ny fitantanana ao Keycloak, dia azo ampiasaina ny REST API/JAVA API. Ny antontan-taratasy dia misy amin'ny endrika elektronika:

HAFA 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

Mpanome IdentitΓ© orinasa (eo an-toerana)

Ny mety hisian'ny fanamarinana ny mpampiasa amin'ny alΓ lan'ny serivisy User Federation.

SSO momba ny maritrano microservice. Mampiasa Keycloak izahay. Fizarana faha-1

Azo ampiasaina ihany koa ny fanamarinana pass-through - raha voamarina amin'ny toeram-piasana misy Kerberos (LDAP na AD) ny mpampiasa, dia azo amarinina ho azy amin'ny Keycloak izy ireo nefa tsy mila manome ny solon'anarana sy ny tenimiafina.

Ho an'ny fanamarinana sy fanomezan-dΓ lana bebe kokoa amin'ny mpampiasa, dia azo atao ny mampiasa DBMS mifandraika, izay azo ampiharina indrindra amin'ny tontolo fampandrosoana, satria tsy mitaky fametrahana lava sy fampidirana amin'ny dingana voalohan'ny tetikasa. Amin'ny alΓ lan'ny default, Keycloak dia mampiasa DBMS naorina mba hitahiry ny toe-javatra sy ny angona mpampiasa.

Ny lisitry ny DBMS tohanana dia midadasika ary misy: MS SQL, Oracle, PostgreSQL, MariaDB, Oracle ary ny hafa. Ny tena voasedra hatreto dia Oracle 12C Release1 RAC sy Galera 3.12 cluster ho an'ny MariaDB 10.1.19.

Mpanome anarana - fidirana ara-tsosialy

Azo atao ny mampiasa fidirana amin'ny tambajotra sosialy. Mba ahafahana manamarina ny mpampiasa dia ampiasao ny console admin Keycloack. Tsy ilaina ny fanovana ny kaody fampiharana ary ity fampiasa ity dia azo alaina ivelan'ny boaty ary azo ampiasaina amin'ny dingana rehetra amin'ny tetikasa.

SSO momba ny maritrano microservice. Mampiasa Keycloak izahay. Fizarana faha-1

Azo atao ny mampiasa mpanome OpenID/SAML Identity ho an'ny fanamarinana ny mpampiasa.

Toe-javatra fanomezan-dΓ lana mahazatra mampiasa OAuth2 ao amin'ny Keycloak

Fikorianan'ny kaody fanomezan-dΓ lana - ampiasaina amin'ny fampiharana amin'ny lafiny server. Iray amin'ireo karazana fahazoan-dΓ lana mahazatra indrindra satria mety tsara amin'ny rindranasa amin'ny lafiny server izay tsy azon'ny hafa idiran'ny kaody loharanon'ny fampiharana sy ny angona mpanjifa. Ny dingana amin'ity tranga ity dia mifototra amin'ny redirection. Ny fampiharana dia tsy maintsy afaka mifandray amin'ny mpampiasa mpampiasa (user-agent), toy ny navigateur web, mba hahazoana ny kaody fanomezan-dΓ lana API alefa amin'ny alΓ lan'ny mpampiasa mpampiasa.

Fikoriana an-kolaka - ampiasain'ny fampiharana finday na tranonkala (fampiharana mandeha amin'ny fitaovan'ny mpampiasa).

Ny karazana fanomezan-dΓ lana an-tsokosoko dia ampiasain'ny fampiharana finday sy tranonkala izay tsy azo antoka ny tsiambaratelon'ny mpanjifa. Ny karazana fanomezan-dΓ lana an-tsokosoko ihany koa dia mampiasa famerenan'ny mpiasan'ny mpampiasa, izay ampitaina amin'ny mpiasan'ny mpampiasa ny mari-pamantarana fidirana mba hampiasaina amin'ny fampiharana any aoriana. Izany dia manome ny marika ho an'ny mpampiasa sy ny fampiharana hafa amin'ny fitaovan'ny mpampiasa. Ity karazana fanomezan-dΓ lana ity dia tsy manamarina ny maha-izy azy ny fampiharana, ary ny fizotrany dia miankina amin'ny URL redirect (nisoratra anarana taloha tamin'ny serivisy).

Implicit Flow dia tsy mahazaka ny token refresh token.

Ny fanomezan-dΓ lana ho an'ny mpanjifa - ampiasaina rehefa miditra amin'ny API ny fampiharana. Ity karazana fanomezan-dΓ lana ity dia matetika ampiasaina amin'ny fifaneraserana amin'ny mpizara izay tsy maintsy mitranga any ambadika tsy misy fifampiraharahana amin'ny mpampiasa eo no ho eo. Ny fikorianan'ny fanomezan-dΓ lana ho an'ny mpanjifa dia ahafahan'ny serivisy tranonkala (mpanjifa tsiambaratelo) hampiasa ny mombamomba azy manokana fa tsy haka tahaka ny mpampiasa ho fanamarinana rehefa miantso serivisy tranonkala hafa. Ho an'ny fiarovana avo kokoa dia azo atao ny mampiasa taratasy fanamarinana (fa tsy tsiambaratelo iombonana) ho mari-pankasitrahana ny serivisy antso.

Ny famaritana OAuth2 dia voalaza ao amin'ny
RFC-6749
RFC-8252
RFC-6819

JWT token sy ny tombony azo

JWT (JSON Web Token) dia fenitra misokatra (https://tools.ietf.org/html/rfc7519) izay mamaritra fomba mirindra sy mahafehy tena mba hamindra azo antoka ny vaovao eo amin'ny andaniny sy ny ankilany ho toy ny zavatra JSON.

Araka ny fenitra, ny token dia misy ampahany telo amin'ny endrika base-64, misaraka amin'ny teboka. Ny ampahany voalohany dia antsoina hoe lohapejy, izay ahitana ny karazana famantarana sy ny anaran'ny algorithm hash hahazoana ny sonia nomerika. Ny ampahany faharoa dia mitahiry fampahalalana fototra (mpampiasa, toetra, sns.). Ny ampahany fahatelo dia ny sonia nomerika.

. .
Aza mitahiry na oviana na oviana ny famantarana ao amin'ny angon-drakitrao. Satria ny mari-pamantarana manan-kery dia mitovy amin'ny tenimiafina, ny fitehirizana famantarana dia mitovy amin'ny fitehirizana tenimiafina amin'ny lahatsoratra mazava.
Access token dia mari-pamantarana manome ny tompony fahafahana miditra amin'ny loharanon'ny mpizara voaaro. Matetika dia fohy ny androm-piainany ary mety hitondra fampahalalana fanampiny, toy ny adiresy IP an'ny antoko mangataka ny marika.

Refresh token dia famantarana ahafahan'ny mpanjifa mangataka famantarana fidirana vaovao rehefa tapitra ny androm-piainany. Ireo famantarana ireo dia matetika avoaka mandritra ny fotoana maharitra.

Ny tombony lehibe amin'ny fampiasana amin'ny maritrano microservice:

  • Fahaizana miditra amin'ny fampiharana sy serivisy isan-karazany amin'ny alΓ lan'ny fanamarinana indray mandeha.
  • Raha tsy misy toetra takiana maromaro ao amin'ny mombamomba ny mpampiasa, dia azo atao ny mampanan-karena azy ireo amin'ny angon-drakitra azo ampidirina amin'ny enta-mavesatra, ao anatin'izany ny mandeha ho azy sy ny lalitra.
  • Tsy ilaina ny mitahiry vaovao momba ny fivoriana mavitrika; ny fampiharana mpizara ihany no mila manamarina ny sonia.
  • Fanaraha-maso fidirana mora kokoa amin'ny alΓ lan'ny toetra fanampiny ao amin'ny enta-mavesatra.
  • Ny fampiasana sonia famantarana ho an'ny lohapejy sy ny entana dia mampitombo ny fiarovana ny vahaolana ankapobeny.

JWT token - composition

lohapejy - Raha ny mahazatra, ny lohapejy dia tsy misy afa-tsy ny karazana famantarana sy ny algorithm ampiasaina amin'ny fanafenana.

Ny karazana famantarana dia voatahiry ao amin'ny famaha "typ". Ny fanalahidin'ny "typ" dia tsy raharahaina ao amin'ny JWT. Raha misy ny fanalahidin'ny "typ", dia tsy maintsy JWT ny sandany mba hanondroana fa JSON Web Token ity zavatra ity.

Ny fanalahidy faharoa "alg" dia mamaritra ny algorithm ampiasaina amin'ny encryption ny famantarana. Tokony apetraka amin'ny HS256 izany amin'ny alΓ lan'ny default. Ny lohapejy dia voakodia ao amin'ny base64.

{ "alg": "HS256", "typ": "JWT"}
entana (votoaty) - ny entana dia mitahiry izay vaovao tokony hohamarinina. Ny fanalahidy tsirairay ao amin'ny enta-mavesatra dia fantatra amin'ny anarana hoe "fanambarana". Ohatra, afaka miditra amin'ny fampiharana ianao amin'ny alΓ lan'ny fanasana (promotion mihidy). Rehefa te hanasa olona handray anjara izahay dia mandefa mailaka fanasana azy ireo. Zava-dehibe ny manamarina fa an'ny olona manaiky ny fanasana ny adiresy mailaka, ka hampiditra io adiresy io ao amin'ny enta-mavesatra isika amin'ny fitehirizana azy ao amin'ny famaha "mailaka".

{"mailaka": "[email voaaro]"}

Ny lakile amin'ny enta-mavesatra dia mety ho tsy misy dikany. Na izany aza, misy vitsivitsy voatokana:

  • iss (Mpanonta) - mamaritra ny fampiharana izay handefasana ny famantarana.
  • sub (Sujet) - mamaritra ny foto-kevitry ny famantarana.
  • aud (Audience) – andiana tady na URI izay misy lisitry ny mpandray an'io famantarana io. Rehefa mahazo JWT miaraka amin'ny fanalahidy nomena ny mpandray anjara, dia tsy maintsy manamarina ny tenany ao amin'ireo mpandray izany - raha tsy izany dia tsy miraharaha ny famantarana.
  • exp (fotoana lany daty) - Manondro ny fotoana lany ny token. Ny fenitra JWT dia mitaky ny fampiharana rehetra mandΓ  ny marika lany daty. Ny fanalahidin'ny Exp dia tokony ho mari-potoana amin'ny endrika unix.
  • nbf (Tsy Teo aloha) dia fotoana amin'ny endrika unix izay mamaritra ny fotoana hanan-kery ny famantarana.
  • iat (Navoaka At) - Ity lakile ity dia maneho ny fotoana namoahana ny famantarana ary azo ampiasaina hamaritana ny taonan'ny JWT. Ny famaha iat dia tokony ho mari-potoana amin'ny endrika unix.
  • Jti (JWT ID) dia tady iray izay mamaritra ny famantarana tsy manam-paharoa amin'ity marika ity.

Zava-dehibe ny mahatakatra fa ny karama dia tsy ampitaina amin'ny endrika encryption (na dia azo amboarina aza ny famantarana ary azo atao ny mampita angon-drakitra miafina). Noho izany, tsy afaka mitahiry vaovao miafina. Tahaka ny lohapejy, ny karama dia base64 voakodia.
sonia - rehefa manana lohapejy sy entana isika dia afaka manao kajy ny sonia.

Base64-encoded: ny lohapejy sy ny entana dia alaina, atambatra ho tady amin'ny teboka iray. Avy eo, ity tady ity sy ny fanalahidy miafina dia ampidirina amin'ny algorithm encryption voalaza ao amin'ny lohapejy (fanalahidy "alg"). Ny fanalahidy dia mety ho tady rehetra. Ny tady lava kokoa no tiana indrindra satria haharitra ela ny fakana azy.

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

Manangana Architecture Cluster Keycloak Failover

Rehefa mampiasa kluster tokana ho an'ny tetikasa rehetra dia mitombo ny fepetra takiana amin'ny vahaolana SSO. Rehefa kely ny isan'ny tetikasa dia tsy dia manan-danja loatra amin'ny tetikasa rehetra ireo fepetra ireo, na izany aza, satria mitombo ny isan'ny mpampiasa sy ny fampidirana, dia mitombo ny fepetra takiana amin'ny fahazoana sy ny fahombiazany.

Ny fampitomboana ny risika amin'ny tsy fahombiazan'ny SSO tokana dia mampitombo ny fepetra takiana amin'ny maritrano vahaolana sy ny fomba ampiasaina amin'ny singa miverimberina ary mitarika amin'ny SLA tena henjana. Amin'io lafiny io, matetika mandritra ny fampandrosoana na ny dingana voalohany amin'ny fampiharana ny vahaolana, ny tetikasa dia manana fotodrafitrasa tsy mahazaka lesoka. Rehefa mandroso ny fampandrosoana dia ilaina ny mametraka ny fahafahana ho an'ny fampandrosoana sy ny fampitomboana. Mora kokoa ny manangana cluster failover amin'ny fampiasana virtoaly container na fomba hybrid.

Raha hiasa amin'ny maodely cluster Active/Active sy Active/Passive dia ilaina ny miantoka ny fitovian'ny angon-drakitra ao amin'ny angon-drakitra relational - ireo node database dia tsy maintsy averina miaraka amin'ny foibe angon-drakitra samihafa.

Ohatra tsotra indrindra amin'ny fametrahana fandeferana diso.

SSO momba ny maritrano microservice. Mampiasa Keycloak izahay. Fizarana faha-1

Inona no tombony azo amin'ny fampiasana cluster tokana:

  • Avo ny fahafahana sy ny fampisehoana.
  • Tohano ny fomba fiasa: Active / Active, Active / Passive.
  • Ny mety hisian'ny scaling mavitrika - rehefa mampiasa virtoaly container.
  • Ny mety hisian'ny fitantanana sy fanaraha-maso foibe.
  • Fomba iray iraisan'ny famantarana/fanamarinana/fanomezana alalana ireo mpampiasa amin'ny tetikasa.
  • Fifandraisana mangarahara kokoa eo amin'ny tetikasa samihafa tsy misy fidiran'ny mpampiasa.
  • Ny fahafahana mampiasa indray ny marika JWT amin'ny tetikasa isan-karazany.
  • Toerana tokana itokisana.
  • Famoahana haingana kokoa ny tetikasa amin'ny fampiasana microservices/container virtualization (tsy mila mametraka sy manamboatra singa fanampiny).
  • Azo atao ny mividy fanohanana ara-barotra amin'ny mpivarotra.

Inona no tokony hotadiavina rehefa manomana Cluster

DBMS

Keycloak dia mampiasa rafitra fitantanana DBMS mba hamonjena: fanjakana, mpanjifa, mpampiasa, sns.
DBMS isan-karazany no tohanana: MS SQL, Oracle, MySQL, PostgreSQL. Ny Keycloak dia tonga miaraka amin'ny angon-drakitra mifandray aminy manokana. Amporisihina ny hampiasaina amin'ny tontolo tsy misy entana - toy ny tontolo fampandrosoana.

Raha hiasa amin'ny maody cluster Active/Active sy Active/Passive dia ilaina ny miantoka ny fitovian'ny angon-drakitra ao amin'ny angon-drakitra relational ary ny nodes roa ao amin'ny cluster database dia averina miaraka amin'ny foibe data.

Cache zaraina (Infinspan)

Mba hahafahan'ny cluster miasa tsara dia ilaina ny fampifanarahana fanampiny amin'ireto karazana cache manaraka ireto amin'ny fampiasana JBoss Data Grid:

Sessions authentication - ampiasaina hitahiry angona rehefa manamarina mpampiasa iray manokana. Ny fangatahana avy amin'ity cache ity dia matetika tsy misy afa-tsy ny navigateur sy ny mpizara Keycloak, fa tsy ny fampiharana.

Ny mari-pamantarana hetsika dia ampiasaina amin'ny toe-javatra izay ilain'ny mpampiasa hanamafisana hetsika asynchronous (amin'ny alΓ lan'ny mailaka). Ohatra, mandritra ny fikorianan'ny tenimiafina hadino, ny cache actionTokens Infinispan dia ampiasaina hanara-maso ny metadata momba ireo mari-pamantarana hetsika mifandraika izay efa nampiasaina, ka tsy azo ampiasaina indray.

Caching sy fanafoanana ny angon-drakitra maharitra - ampiasaina amin'ny fitahirizana angon-drakitra maharitra mba hisorohana ny fanontaniana tsy ilaina amin'ny angona. Rehefa misy mpizara Keycloak manavao ny angona, dia tsy maintsy mahafantatra momba izany ny mpizara Keycloak hafa rehetra any amin'ny foibe data rehetra.

Asa - Ampiasaina handefasana hafatra tsy manara-penitra eo anelanelan'ny node cluster sy ivon'ny data.

Fivorian'ny mpampiasa - ampiasaina hitahiry ny angon'ny fotoam-pivorian'ny mpampiasa izay manankery mandritra ny fotoam-pivezivezena ataon'ny mpampiasa. Ny cache dia tsy maintsy mitantana ny fangatahana HTTP avy amin'ny mpampiasa farany sy ny fampiharana.

Brute force protection - ampiasaina hanaraha-maso ny angona momba ny fidirana tsy nahomby.

Load balancing

Ny mpanelanelana entana no teboka fidirana tokana mankany amin'ny keycloak ary tsy maintsy manohana fivoriana miraikitra.

Mpizara fampiharana

Izy ireo dia ampiasaina mba hifehezana ny fifandraisan'ny singa amin'ny tsirairay ary azo atao virtoaly na containerized amin'ny alΓ lan'ny fitaovana automatique efa misy sy ny scaling mavitrika amin'ny fitaovana automatique fotodrafitrasa. Ny sehatra fametrahana mahazatra indrindra dia ao amin'ny OpenShift, Kubernates, Rancher.

Izany dia mamita ny ampahany voalohany - ny teorika. Ao amin'ny andian-dahatsoratra manaraka dia horesahina ny ohatra momba ny fampidirana miaraka amin'ireo mpamatsy famantarana isan-karazany sy ny ohatra momba ny toe-javatra.

Source: www.habr.com

Add a comment