{"id":40865,"date":"2020-02-05T10:07:04","date_gmt":"2020-02-05T07:07:04","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/sso-na-mikroservisnoj-arhitekture-ispolzuem-keycloak-chast-%e2%84%961"},"modified":"2020-02-05T10:07:04","modified_gmt":"2020-02-05T07:07:04","slug":"sso-na-mikroservisnoj-arhitekture-ispolzuem-keycloak-chast-%e2%84%961","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/sso-na-mikroservisnoj-arhitekture-ispolzuem-keycloak-chast-%e2%84%961","title":{"rendered":"Mikroteenuste arhitektuuril p\u00f5hinev SSO. Kasutame Keycloak'i. Osa \u21161","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Igas suuremas ettev\u00f5ttes, sealhulgas X5 Retail Groupis, suureneb projektide arv, kus on vajalik kasutajate autentimine. Aja jooksul on vajalik sujuv \u00fcleminek rakenduste vahel, millega kaasneb vajadus \u00fchtse SSO-serveri j\u00e4rele. Kuid kuidas toimida, kui sellised identiteedi pakkujad nagu AD v\u00f5i muud, mis ei oma t\u00e4iendavaid atribuute, on juba erinevates projektides kasutusel? Siin tulevad appi identiteedi vahendajate s\u00fcsteemid. K\u00f5ige funktsionaalsemad neist on viimaste esindajad, nagu Keycloak, Gravitee Access management jne. Kasutusskenaarid v\u00f5ivad olla erinevad: masinavaheline suhtlemine, kasutajate osalemine jne. Lahendus peab toetama paindlikku ja skaleeritavat funktsionaalsust, mis suudab \u00fchendada k\u00f5ik n\u00f5uded \u00fchte, ning meie ettev\u00f5ttes on selliseks lahenduseks praegu identiteedi vahendaja \u2013 Keycloak. <\/p>\n<p><img decoding=\"async\" alt=\"Mikroteenuste arhitektuuril p\u00f5hinev SSO. Kasutame Keycloak&#039;i. Osa \u21161\" src=\"\/wp-content\/uploads\/2020\/02\/3a7f1d5f68fa5d07fc30f2804dc62bef.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nKeycloak \u2013 avatud l\u00e4htekoodiga toode, mis on m\u00f5eldud identiteedi ja juurdep\u00e4\u00e4su kontrollimiseks ning mida toetab RedHat. See on aluseks ettev\u00f5tte toodetele, mis kasutavad SSO \u2013 RH-SSO.<\/p>\n<h3>Peamised m\u00f5isted <\/h3>\n<p>\nEnne lahenduste ja l\u00e4henemisviiside t\u00e4psustamist tuleb m\u00e4\u00e4ratleda terminid ja protsesside j\u00e4rjestus:<\/p>\n<p><img decoding=\"async\" alt=\"Mikroteenuste arhitektuuril p\u00f5hinev SSO. Kasutame Keycloak&#039;i. Osa \u21161\" src=\"\/wp-content\/uploads\/2020\/02\/3a83d4364425aeed1019662fd1d5f152.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Identifitseerimine<\/b> \u2014 see on isiku tuvastamise protseduur tema identifikaatori j\u00e4rgi (lihtsalt \u00f6eldes, see on nime, kasutajanime v\u00f5i numbri m\u00e4\u00e4ramine).<\/p>\n<p><b>Autentimine<\/b> \u2013 see on autentimise kontrollimise protseduur (kasutaja t\u00f5endatakse parooli, e-kirja digitaalse allkirja jms abil).<\/p>\n<p><b>Autoriseerimine<\/b> \u2013 see on juurdep\u00e4\u00e4su andmine mingile ressursile (n\u00e4iteks e-postile).<\/p>\n<h4>Identifitseerimisprokur\u00f6r Keycloak<\/h4>\n<p>\n<b>Keycloak<\/b> \u2014 avatud l\u00e4htekoodiga identiteedi ja juurdep\u00e4\u00e4su haldamise lahendus, m\u00f5eldud kasutamiseks teabe s\u00fcsteemides, kus v\u00f5ivad rakenduda mikroteenuste arhitektuuri mustrid.<\/p>\n<p>Keycloak pakub funktsioone nagu \u00fchekordne sisenemine (SSO), identiteedi vahendamine ja sotsiaalne sisenemine, kasutajate f\u00f6deratsioon, kliendi adapterid, administraatori konsool ja konto haldamise konsool.<\/p>\n<p>Keycloak toetab j\u00e4rgmisi p\u00f5hifunktsioone:<\/p>\n<ul>\n<li>\u00dchekordne sisenemine ja \u00fchekordne v\u00e4ljumine brauserirakenduste jaoks.<\/li>\n<li>OpenID\/OAuth 2.0\/SAML toe pakkumine.<\/li>\n<li>Identiteedi vahendamine \u2013 autentimine v\u00e4liste OpenID Connect v\u00f5i SAML identiteedi pakkijate kaudu.<\/li>\n<li>Sotsiaalne sisenemine \u2013 tugi Google'i, GitHubi, Facebooki, Twitteri kaudu kasutajate tuvastamiseks.<\/li>\n<li>Kasutajate f\u00f6deratsioon \u2013 kasutajate s\u00fcnkroniseerimine LDAP ja Active Directory serveritest ja muudest identiteedi pakkijatest.<\/li>\n<li>Kerberose sild \u2013 Kerberose serveri kasutamine kasutajate automaatseks autentimiseks.<\/li>\n<li>Administraatori konsool \u2013 seadete ja lahenduse parameetrite haldamiseks veebis.<\/li>\n<li>Konto haldamise konsool \u2013 kasutajaprofiili iseseisvaks haldamiseks.<\/li>\n<li>Lahenduse kohandamine ettev\u00f5tte br\u00e4ndi stiilist l\u00e4htuvalt.<\/li>\n<li>2FA autentimine \u2013 TOTP\/HOTP tugi Google Authenticatori v\u00f5i FreeOTP abil.<\/li>\n<li>Sisselogimise vood \u2013 toetada on v\u00f5imalik iseregistreerimist, parooli taastamist ja l\u00e4htestamist ning muud.<\/li>\n<li>Seansihalduse haldamine \u2013 administraatorid saavad hallata kasutajate seansse \u00fchest kohast.<\/li>\n<li>Tokeni kaardistajad \u2013 kasutajate, rollide ja teiste n\u00f5utud atribuutide sidumine tokenitega.<\/li>\n<li>Paindlik poliitikahaldus realm'i, rakenduste ja kasutajate kaudu.<\/li>\n<li>CORSi tugi \u2013 kliendiadapteritel on sisseehitatud CORSi tugi.<\/li>\n<li>Teenusepakkuja liidesed (SPI) \u2013 suur hulk SPI-sid, mis v\u00f5imaldavad kohandada serveri erinevaid aspekte: autentimistooted, identifitseerimisprotsessorid, protokollide kaardistamine ja palju muud.<\/li>\n<li>Kliendiadapterid JavaScripti rakenduste, WildFly, JBoss EAP, Fuse, Tomcat, Jetty, Spring jaoks.<\/li>\n<li>Toetab t\u00f6\u00f6 t\u00f6\u00f6tlemist erinevate rakendustega, mis toetavad OpenID Connect Relying Party library v\u00f5i SAML 2.0 Service Provider Library.<\/li>\n<li>Laienemise v\u00f5imalus pluginate kasutamise kaudu.<\/li>\n<\/ul>\n<p>\nCI\/CD protsesside ning Keycloak'i haldusprotsesside automatiseerimiseks v\u00f5ib kasutada REST API \/ JAVA API. Dokumentatsioon on elektrooniliselt saadaval: <\/p>\n<p>REST API <noindex><a rel=\"nofollow\" href=\"https:\/\/www.keycloak.org\/docs-api\/8.0\/rest-api\/index.html\">https:\/\/www.keycloak.org\/docs-api\/8.0\/rest-api\/index.html<\/a><\/noindex><br \/>\nJAVA API <noindex><a rel=\"nofollow\" href=\"https:\/\/www.keycloak.org\/docs-api\/8.0\/javadocs\/index.html\">https:\/\/www.keycloak.org\/docs-api\/8.0\/javadocs\/index.html<\/a><\/noindex><\/p>\n<h4>Ettev\u00f5tte taseme identifitseerimisprotsessorid (On-Premise)<\/h4>\n<p>\nKasutajate autentimise v\u00f5imalus User Federation teenuste kaudu.<\/p>\n<p><img decoding=\"async\" alt=\"Mikroteenuste arhitektuuril p\u00f5hinev SSO. Kasutame Keycloak&#039;i. Osa \u21161\" src=\"\/wp-content\/uploads\/2020\/02\/59bbeaf4630855467ddb003d52b0c1b6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSamuti v\u00f5ib kasutada \u00fchtset autentimist \u2014 kui kasutajad logivad sisse t\u00f6\u00f6stustes Kerberos (LDAP v\u00f5i AD) kaudu, saavad nad automaatselt autentida Keycloak'is, ilma et peaksid uuesti sisestama oma kasutajanime ja parooli. <\/p>\n<p>Kasutajate autentimiseks ja j\u00e4rgnevaks autoriseerimiseks on v\u00f5imalik kasutada relatsioonilist andmebaasi, mis on k\u00f5ige sobivam arenduskeskkondades, kuna see ei n\u00f5ua pikaajalisi seadistusi ja integreerimisi projekti varases etapis. Keycloak kasutab vaikimisi sisseehitatud andmebaasi seadete ja kasutajaandmete salvestamiseks.<\/p>\n<p>Toetatud andmebaaside loetelu on ulatuslik ja sisaldab: MS SQL, Oracle, PostgreSQL, MariaDB, Oracle ja teised. Praegu on k\u00f5ige enam testitud Oracle 12C Release1 RAC ja Galera 3.12 klaster MariaDB 10.1.19 jaoks. <\/p>\n<h4>Identiteedipakkujad \u2014 sotsiaalne sisselogimine <\/h4>\n<p>\nSotsiaalmeedia sisselogimise kasutamine on v\u00f5imalik. Kasutajate autentimise aktiveerimiseks kasutatakse Keycloak'i administreerimiskonsooli. Rakenduste koodis muudatusi ei k\u00fcsita, ning see funktsionaalsus on saadaval \"v\u00e4lja pakutud\" ja seda saab aktiveerida projekti igas etapis.<\/p>\n<p><img decoding=\"async\" alt=\"Mikroteenuste arhitektuuril p\u00f5hinev SSO. Kasutame Keycloak&#039;i. Osa \u21161\" src=\"\/wp-content\/uploads\/2020\/02\/546ddea10c79662ca37a448d3dfc1fd0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKasutajate autentimiseks on v\u00f5imalik kasutada OpenID\/SAML identiteeditarnijaid.<\/p>\n<h3>T\u00fc\u00fcpilised autoriseerimisstsenaariumid OAuth2 kasutamisel Keycloak'is<\/h3>\n<p>\n<b>Autoriseerimisv\u00f5ti voog <\/b> \u2014 kasutatakse serverip\u00f5histes rakendustes (server-side applications). \u00dcks levinumaid v\u00f5tmemeetodeid, kuna see sobib h\u00e4sti serverip\u00f5histele rakendustele, mille l\u00e4htekood ja kliendiandmed ei ole kolmandatele isikutele kergesti k\u00e4ttesaadavad. Protsess p\u00f5hineb sel juhul \u00fcmbersuunamisel (redirection). Rakendus peab olema v\u00f5imeline suhtlema kasutajaagendi (user-agent), n\u00e4iteks veebibrauseriga \u2014 saama autoriseerimise koode, mis on \u00fcmbersuunatud l\u00e4bi kasutajaagendi.<\/p>\n<p><b>Implitsiitne voog<\/b> \u2014 kasutatakse mobiilsete v\u00f5i veebirakenduste (rakendused, mis t\u00f6\u00f6tavad kasutaja seadmes).<\/p>\n<p>Kaudne autoriseerimise t\u00fc\u00fcp on m\u00f5eldud mobiil- ja veebirakendustele, kus kliendi konfidentsiaalsust ei saa garantiida. Kaudne autoriseerimise t\u00fc\u00fcp kasutab ka kasutajaagendi \u00fcmber suunamist, mille k\u00e4igus edastatakse juurdep\u00e4\u00e4sutoken kasutajaagendile rakenduses edasiseks kasutamiseks. See muudab tokeni kergesti k\u00e4ttesaadavaks kasutajale ja teistele rakendustele tema seadmes. Selle autoriseerimise t\u00fc\u00fcbi puhul ei toimu rakenduse autentimise kontrollimist ning kogu protsess toetub \u00fcmber suunamise URL-ile (mis on eelnevalt teenuses registreeritud).<\/p>\n<p>Kaudne voog ei toeta juurdep\u00e4\u00e4sutokeni v\u00e4rskendustokenite (refresh tokens) kasutamist.<br \/>\n<br \/>\n<b>Kliendi mandaadi autoriseerimise voog<\/b> \u2014 kasutatakse rakenduste juurdep\u00e4\u00e4suks API-le. See autoriseerimise t\u00fc\u00fcp on tavaliselt m\u00f5eldud server-server interaktsioonideks, mis peavad toimuma taustal ilma otsese kasutajaga suhtlemiseta. Klientide mandaadi voog v\u00f5imaldab veebiteenustel (privaatsetel klientidel) kasutada oma mandaate ilma kasutaja autentimise vajaduseta, kui kutsutakse teist veebiteenust. K\u00f5rgema turvalisuse tagamiseks v\u00f5ib kutse teenus kasutada sertifikaati (\u00fcldise salajase asemel) mandaadina.<\/p>\n<p>OAuth2 spetsifikatsioon on kirjeldatud <br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc6749\">RFC-6749<\/a><\/noindex> <br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc8259\">RFC-8252<\/a><\/noindex> <br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc6819\">RFC-6819<\/a><\/noindex><\/p>\n<h3>JWT token ja selle eelised<\/h3>\n<p>\nJWT (JSON Web Token) on avatud standard (<noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc7519\">https:\/\/tools.ietf.org\/html\/rfc7519<\/a><\/noindex>), mis m\u00e4\u00e4ratleb kompaktsed ja iseseisvad viisid teabe turvaliseks edastamiseks osapoolte vahel JSON-objekti kujul.<\/p>\n<p>Standardi kohaselt koosneb token kolmest osast, mis on jagatud punktidega base-64 formaadis. Esimene osa on pealkiri (header), mis sisaldab tokeni t\u00fc\u00fcpi ja digitaalallkirja genereerimiseks kasutatava r\u00e4si algoritmi nime. Teine osa sisaldab p\u00f5hiteavet (kasutaja, atribuudid jne). Kolmas osa on digitaalallkiri.<\/p>\n<p>..<br \/>\n\u00c4rge salvestage tokenit oma andmebaasi. Kuna kehtiv token on ekvivalentne parooliga, on tokeni salvestamine sama, mis parooli avatud kujul salvestamine.<br \/>\n<b>Access-token <\/b>on token, mis annab oma omanikule juurdep\u00e4\u00e4su serveri kaitstud ressurssidele. Tavaliselt on sellel l\u00fchike kehtivusaeg ja see v\u00f5ib sisaldada t\u00e4iendavat teavet, n\u00e4iteks IP-aadressi, mis k\u00fcsib antud tokenit.<\/p>\n<p><b>Refresh-token <\/b>on token, mis v\u00f5imaldab klientidel taotleda uusi access-token'e nende kehtivuse l\u00f5ppemise j\u00e4rel. Need tokenid v\u00e4ljastatakse tavaliselt pikemaks ajaks.<\/p>\n<p>Mikroteenuste arhitektuuris rakendamise peamised eelised:<\/p>\n<ul>\n<li>V\u00f5imalus p\u00e4\u00e4seda erinevatele rakendustele ja teenustele \u00fchekordse autentimise kaudu.<\/li>\n<li>Kui kasutajaprofiilides puuduvad mitmed vajalikud atribuudid, on v\u00f5imalik andmete t\u00e4iendamine, sealhulgas automatiseeritult ja \u201ereaalajas\u201c.<\/li>\n<li>Pole vajalik aktiveeritud sessioonide teabe s\u00e4ilitamine, serverirakendus peab lihtsalt kontrollima allkirja.<\/li>\n<li>Paindlikum juurdep\u00e4\u00e4suhaldus lisatud atribuutide kaudu kannetes.<\/li>\n<li>Tokeni allkirja rakendamine p\u00e4ises ja kasulikus koormuses suurendab lahenduse \u00fcldist turvalisust.<\/li>\n<\/ul>\n<p><\/p>\n<h3>JWT token \u2014 koostis<\/h3>\n<p>\n<b>P\u00e4is<\/b> \u2014 vaikimisi sisaldab p\u00e4is vaid tokeni t\u00fc\u00fcpi ja algoritmi, mis on kasutusel kr\u00fcptimiseks.<\/p>\n<p>Tokeni t\u00fc\u00fcp salvestatakse v\u00f5tmes \u201etyp\u201c. V\u00f5tit \u201etyp\u201c ignoreeritakse JWT-s. Kui v\u00f5ti \u201etyp\u201c on olemas, peab selle v\u00e4\u00e4rtus olema JWT, et n\u00e4idata, et see objekt on JSON Web Token.<\/p>\n<p>Teine v\u00f5ti \u201ealg\u201c m\u00e4\u00e4rab algoritmi, mis on kasutusel tokeni kr\u00fcptimiseks. Vaikimisi peab see olema seatud HS256. P\u00e4is kodeeritakse base64.<\/p>\n<p>{ &quot;alg&quot;: &quot;HS256&quot;, &quot;typ&quot;: &quot;JWT&quot;}<br \/>\n<b>Payload (sisu)<\/b> \u2014 koormas hoitakse igasugust teavet, mida on vaja kontrollida. Iga v\u00f5tme nimi koormas tuntakse kui \u201edeklaratsioon\u201d. N\u00e4iteks saab rakendusse siseneda ainult kutsega (suletud kampaania). Kui soovime kedagi osalema kutsuda, saadame talle kutse. Oluline on kontrollida, et e-posti aadress kuulub kutset vastu v\u00f5tvale isikule, seet\u00f5ttu lisame selle aadressi koormasse, salvestades selle v\u00f5tmesse \u201ee-mail\u201d.<\/p>\n<p>{ &quot;email&quot;: &quot;example@x5.ru&quot; }<br \/>\n<br \/>\nKoormas olevad v\u00f5tmed v\u00f5ivad olla suvalised. Siiski on m\u00f5ned reserveeritud:<\/p>\n<ul>\n<li>iss (Issuer) \u2014 m\u00e4\u00e4ratleb rakenduse, kust token saadetakse.<\/li>\n<li>sub (Subject) \u2014 m\u00e4\u00e4ratleb tokeni teema.<\/li>\n<li>aud (Audience) \u2013 juhtumiga tundlikest stringidest v\u00f5i URI-st koosnev massiiv, mis on l\u00f5petajate nimekiri selle tokeni saamiseks. Kui vastuv\u00f5tja saab antud v\u00f5tmega JWT, peab ta kontrollima, kas ta on l\u00f5petajate seas \u2014 muidu ignoreeritakse tokenit.<\/li>\n<li>exp (Aegumistumine) \u2014 n\u00e4itab, millal m\u00e4rgendi kehtivusaeg l\u00f5ppeb. JWT standard n\u00f5uab, et k\u00f5ikide selle rakenduste kehtetuks muutunud m\u00e4rgid tuleks tagasi l\u00fckata. Exp v\u00f5ti peab olema ajatemperatuur unix-format.<\/li>\n<li>nbf (Ei Enne) \u2014 unix-formaadis aeg, mis m\u00e4\u00e4rab hetke, mil token muutub kehtivaks.<\/li>\n<li>iat (V\u00e4lja Antud Aeg) \u2014 see v\u00f5ti esindab aega, mil m\u00e4rgend anti v\u00e4lja ja seda saab kasutada JWT vanuse m\u00e4\u00e4ramiseks. iat v\u00f5ti peab olema ajatemperatuur unix-format.<\/li>\n<li>Jti (JWT ID) \u2014 string, mis m\u00e4\u00e4rab antud tokeni unikaalse identifikaatori, arvestades suur- ja v\u00e4iket\u00e4hti.<\/li>\n<\/ul>\n<p>\nOluline on m\u00f5ista, et kasulikkoormus ei edastata kr\u00fcpteeritud kujul (kuigi, tokenid v\u00f5ivad olla pesakestes ning siis on v\u00f5imalik edastada kr\u00fcpteeritud andmeid). Seet\u00f5ttu ei saa selle sees hoida mingeid salajasi andmeid. Nagu ka pealkiri, kodeeritakse kasulikkoormus base64.<br \/>\n<b>Allkiri<\/b> \u2014 kui meil on pealkiri ja kasulikkoormus, saame arvutada allkirja.<\/p>\n<p>Base64-s varjatud: p\u00e4is ja payload \u00fchendatakse punktiga. Seej\u00e4rel antakse see string ja salajane v\u00f5ti \u0161ifreerimise algoritmi, mis on m\u00e4\u00e4ratud p\u00e4ises (v\u00f5ti \u201ealg\u201d). V\u00f5tmena v\u00f5ib kasutada mistahes stringi. Pikemad stringid on eelistatavad, kuna nende lahti harutamine n\u00f5uab rohkem aega.<\/p>\n<p>{&quot;alg&quot;:&quot;RSA1_5&quot;,\u201cpayload&quot;:&quot;A128CBC-HS256&quot;}<\/p>\n<h3>Kaheksateistk\u00fcmnenda v\u00f5tme jaoks ilma katkestusteta arhitektuuri loomine<\/h3>\n<p>\n\u00dche klastriga, mis p\u00e4rast v\u00e4ljat\u00f5stmist alates tehtud projektidest tuleb SSO lahendust kasutada, on n\u00f5uded suurenenud. Kui projektide arv on v\u00e4ike, ei ole need n\u00f5uded k\u00f5ikide projektide jaoks kiivalt tajutavad, kuid kasutajate ja integratsioonide arvu suurenedes t\u00f5usevad n\u00f5uded k\u00e4ttesaadavusele ja j\u00f5udlusele. <\/p>\n<p>\u00dchtse SSO rikkumisriskide suurenemine t\u00f5stab lahenduse arhitektuuri ja kasutatavate komponentide varukoopia meetodite n\u00f5udmisi, tuues kaasa v\u00e4ga range SLA. Seet\u00f5ttu on t\u00f5en\u00e4olisem, et lahenduste arendamise v\u00f5i varajases rakendamisfaasis on projektidel oma mitte-ei-rafika infrastruktuur. Arengu k\u00e4igus tuleb sisse ehitada arendamise ja laiendamise v\u00f5imalused. K\u00f5ige paindlikum on ehitada katkestusteta klaster konteinerite virtualiseerimise v\u00f5i h\u00fcbriidse l\u00e4henemise abil. <\/p>\n<p>Active\/Active ja Active\/Passive klastere\u017eiimide t\u00f6\u00f6ks on vajalik tagada andmete j\u00e4rjepidevus relatsioonilises andmebaasis \u2013 m\u00f5lemad andmebaasi s\u00f5lmed peavad olema erinevate geograafiliste andmekeskuste vahel s\u00fcnkroonselt replitseeritud.<\/p>\n<p>Lihtsaim katkestusteta installatsiooni n\u00e4ide.<\/p>\n<p><img decoding=\"async\" alt=\"Mikroteenuste arhitektuuril p\u00f5hinev SSO. Kasutame Keycloak&#039;i. Osa \u21161\" src=\"\/wp-content\/uploads\/2020\/02\/c0df30a07e7dda5ae892a1fca3790a45.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMillised on \u00fchtse klustru kasutamise eelised:<\/p>\n<ul>\n<li>K\u00f5rge k\u00e4ttesaadavus ja j\u00f5udlus.<\/li>\n<li>T\u00f6\u00f6re\u017eiimide toetamine: Active\/Active, Active\/Passive.<\/li>\n<li>D\u00fcnaamilise skaleerimise v\u00f5imalus \u2014 konteinerite virtualiseerimise kasutamisel.<\/li>\n<li>Tsentraliseeritud halduse ja j\u00e4lgimise v\u00f5imalus.<\/li>\n<li>\u00dcksne l\u00e4henemine kasutajate tuvastamiseks\/autentimiseks\/autoriseerimiseks projektides.<\/li>\n<li>Selgem koost\u00f6\u00f6 erinevate projektide vahel ilma kasutajate osaluseta.<\/li>\n<li>V\u00f5imalus jagada JWT tokenit erinevates projektides.<\/li>\n<li>\u00dcksne usalduspunkt.<\/li>\n<li>Kiirem projektide k\u00e4ivitamine mikroteenuste\/konteinervirtualiseerimise abil (ei ole vaja t\u00e4iendavate komponentide \u00fclesseadmist ja konfigureerimist).<\/li>\n<li>V\u00f5imalik osta kaubanduslikku tuge tootjalt. <\/li>\n<\/ul>\n<p><\/p>\n<h3>Millele t\u00e4helepanu p\u00f6\u00f6rata klastrit planeerides<\/h3>\n<p><\/p>\n<h4>ANDMEBAASIDE haldamiseks.<\/h4>\n<p>\nKeycloak kasutab andmehalduse s\u00fcsteemi realmide, klientide, kasutajate jms salvestamiseks.<br \/>\nToetatakse suurt valikut andmebaasid\u00fcsteeme: MS SQL, Oracle, MySQL, PostgreSQL. Keycloak on varustatud oma sisseehitatud relatsioonilise andmebaasiga. Soovitatav kasutada madala koormusega keskkondades, nagu arenduskeskkonnad.<\/p>\n<p>Active\/Active ja Active\/Passive klasstri t\u00f6\u00f6ks on vajalik andmete j\u00e4rjepidevuse tagamine relatsioonilises andmebaasis ning m\u00f5lemad andmebaasi klastriga s\u00f5lmed replikatakse s\u00fcnkroonselt andmekeskuste vahel.<\/p>\n<h4>Jaotatud vahem\u00e4lu (Infinispan)<\/h4>\n<p>\nKlasteri n\u00f5uetekohaseks toimimiseks on vajalik t\u00e4iendav s\u00fcnkroniseerimine j\u00e4rgmiste vahem\u00e4lu t\u00fc\u00fcpidega, kasutades JBoss Data Grid:<\/p>\n<p>Autentimisistungid \u2014 kasutatakse konkreetse kasutaja autentimise andmete salvestamiseks. Selle vahem\u00e4lu p\u00e4ringud h\u00f5lmavad tavaliselt ainult veebibrauserit ja Keycloak serverit, mitte rakendust.<\/p>\n<p>Tegevusmargid \u2014 kasutatakse stsenaariumides, kus kasutaja peab toimingu kinnitama as\u00fcnkroonselt (e-posti teel). N\u00e4iteks parooli unustamise voos kasutatakse actionTokens vahem\u00e4lu Infinispan, et j\u00e4lgida seotud tegevusm\u00e4rkide metaandmeid, mis on juba kasutatud, seet\u00f5ttu ei saa neid uuesti kasutada.<\/p>\n<p>P\u00fcsiva andmete vahem\u00e4lu ja t\u00fchistamine \u2013 kasutatakse p\u00fcsivate andmete vahem\u00e4llu salvestamiseks, et v\u00e4ltida liigseid p\u00e4ringuid andmebaasile. Kui m\u00f5ni Keycloak server v\u00e4rskendab andmeid, peavad k\u00f5ik \u00fclej\u00e4\u00e4nud Keycloak serverid k\u00f5igis andmekeskustes sellest teadma.<\/p>\n<p>T\u00f6\u00f6 \u2014 kasutatakse ainult teate edastamiseks t\u00fchistamisest klastris s\u00f5lmede ja andmekeskuste vahel. <\/p>\n<p>Kasutaja seansid \u2014 kasutatakse selleks, et salvestada andmeid kasutaja seansist, mis on kehtivad kasutaja brauseri seansi jooksul. Vahem\u00e4lu peab t\u00f6\u00f6tlema l\u00f5ppkasutaja ja rakenduse HTTP-p\u00e4ringuid. <\/p>\n<p>J\u00f5hkrate r\u00fcnnakute kaitse \u2014 kasutatakse, et j\u00e4lgida andmeid eba\u00f5nnestunud sissetuleku katsetest. <\/p>\n<h4>Koormuse jaotamine<\/h4>\n<p>\nKoormuse jaotaja on keycloaki ainus sisenemispunkt ja see peab toetama liigseid seansse. <\/p>\n<h4>Rakenduste serverid<\/h4>\n<p>\nKasutatakse komponentide omavahelise suhtluse kontrollimiseks ning need v\u00f5ivad olla virtualiseeritud v\u00f5i konteineriseeritud, kasutades olemasolevaid automatiseerimise vahendeid ja infrastruktuuri d\u00fcnaamilist skaleerimist. K\u00f5ige levinumad juurutusskeemid OpenShiftis, Kubernates, Rancheris.<\/p>\n<p>Sellega on esimene osa \u2013 teoreetiline \u2014 l\u00f5petatud. J\u00e4rgmistes artiklite ts\u00fcklites k\u00e4sitletakse erinevate identiteedi pakkujatega integreerimise n\u00e4iteid ja seadistuse n\u00e4iteid.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/X5RetailGroup\/blog\/486778\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043b\u044e\u0431\u043e\u0439 \u043a\u0440\u0443\u043f\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0438 X5 Retail Group \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043f\u043e \u043c\u0435\u0440\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0433\u0434\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0421 \u0442\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u0435\u0441\u0448\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0438 \u0442\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Single-Sing-On (SSO). \u041d\u043e \u043a\u0430\u043a \u0431\u044b\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0442\u0430\u043a\u0438\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u043a\u0430\u043a AD \u0438\u043b\u0438 \u0438\u043d\u044b\u0435, \u043d\u0435 \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":40866,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-40865","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043b\u044e\u0431\u043e\u0439 \u043a\u0440\u0443\u043f\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0438 X5 Retail Group \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043f\u043e \u043c\u0435\u0440\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0433\u0434\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0421 \u0442\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u0435\u0441\u0448\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0438 \u0442\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Single-Sing-On (SSO). \u041d\u043e \u043a\u0430\u043a \u0431\u044b\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0442\u0430\u043a\u0438\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u043a\u0430\u043a AD \u0438\u043b\u0438 \u0438\u043d\u044b\u0435, \u043d\u0435 \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/sso-na-mikroservisnoj-arhitekture-ispolzuem-keycloak-chast-%e2%84%961\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47SSO \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Keycloak. \u0427\u0430\u0441\u0442\u044c \u21161 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043b\u044e\u0431\u043e\u0439 \u043a\u0440\u0443\u043f\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0438 X5 Retail Group \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043f\u043e \u043c\u0435\u0440\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0433\u0434\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0421 \u0442\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u0435\u0441\u0448\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0438 \u0442\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Single-Sing-On (SSO). \u041d\u043e \u043a\u0430\u043a \u0431\u044b\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0442\u0430\u043a\u0438\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u043a\u0430\u043a AD \u0438\u043b\u0438 \u0438\u043d\u044b\u0435, \u043d\u0435 \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/sso-na-mikroservisnoj-arhitekture-ispolzuem-keycloak-chast-%e2%84%961\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-05T07:07:04+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-05T07:07:04+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47SSO mikroteenuste arhitektuuril. Kasutame Keycloak'i. Osa \u21161 | ProHoster","description":"Igas suuremas ettev\u00f5ttes, ja X5 Retail Group ei ole erand, suureneb arenguga projektide hulk, kus on vajalik kasutajate autentimine. Aja jooksul on vajalik sujuv \u00fcleminek kasutajatelt \u00fchelt rakenduselt teisele, ja sellega seondub vajadus \u00fchtse Single-Sign-On (SSO) serveri j\u00e4rele. Kuidas toimida, kui sellised identiteedi pakkujad nagu AD v\u00f5i teised, ei oma t\u00e4iendavaid","canonical_url":"https:\/\/prohoster.info\/et\/blog\/sso-na-mikroservisnoj-arhitekture-ispolzuem-keycloak-chast-%e2%84%961","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47SSO \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Keycloak. \u0427\u0430\u0441\u0442\u044c \u21161 | ProHoster","og:description":"\u0412 \u043b\u044e\u0431\u043e\u0439 \u043a\u0440\u0443\u043f\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0438 X5 Retail Group \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043f\u043e \u043c\u0435\u0440\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0433\u0434\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0421 \u0442\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u0435\u0441\u0448\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0438 \u0442\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Single-Sing-On (SSO). \u041d\u043e \u043a\u0430\u043a \u0431\u044b\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0442\u0430\u043a\u0438\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u043a\u0430\u043a AD \u0438\u043b\u0438 \u0438\u043d\u044b\u0435, \u043d\u0435 \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438","og:url":"https:\/\/prohoster.info\/et\/blog\/sso-na-mikroservisnoj-arhitekture-ispolzuem-keycloak-chast-%e2%84%961","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-05T07:07:04+00:00","article:modified_time":"2020-02-05T07:07:04+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"40865","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:46:14","updated":"2022-09-27 14:28:39"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/40865","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=40865"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/40865\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/40866"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=40865"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=40865"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=40865"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}