{"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\/hu\/blog\/sso-na-mikroservisnoj-arhitekture-ispolzuem-keycloak-chast-%e2%84%961","title":{"rendered":"SSO mikroservizes architekt\u00far\u00e1val. A Keycloak-ot haszn\u00e1ljuk. 1. r\u00e9sz","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>B\u00e1r a nagyv\u00e1llalatokn\u00e1l, \u00edgy az X5 Retail Group-n\u00e1l is, a fejl\u0151d\u00e9s sor\u00e1n egyre t\u00f6bb olyan projekttel tal\u00e1lkozunk, ahol sz\u00fcks\u00e9g van a felhaszn\u00e1l\u00f3k azonos\u00edt\u00e1s\u00e1ra. Id\u0151vel elengedhetetlenn\u00e9 v\u00e1lik a felhaszn\u00e1l\u00f3k z\u00f6kken\u0151mentes \u00e1tmenete egy alkalmaz\u00e1sb\u00f3l a m\u00e1sikba, \u00edgy felmer\u00fcl az ig\u00e9ny egy k\u00f6zponti Single-Sign-On (SSO) szerver haszn\u00e1lat\u00e1ra. De mi a teend\u0151, ha olyan azonos\u00edt\u00f3szolg\u00e1ltat\u00f3k, mint az AD vagy m\u00e1s hasonl\u00f3k, amelyek nem rendelkeznek tov\u00e1bbi attrib\u00fatumokkal, m\u00e1r haszn\u00e1latban vannak k\u00fcl\u00f6nb\u00f6z\u0151 projektekben? Ebben az esetben a \u201eazonos\u00edt\u00f3broke\u201d rendszerek ny\u00fajtanak seg\u00edts\u00e9get. A legfunkcion\u00e1lisabb k\u00e9pvisel\u0151i k\u00f6z\u00e9 tartozik a Keycloak, a Gravitee Access management stb. A haszn\u00e1lati forgat\u00f3k\u00f6nyvek sokf\u00e9les\u00e9ge megfigyelhet\u0151: g\u00e9pi interakci\u00f3, felhaszn\u00e1l\u00f3i r\u00e9szv\u00e9tel \u00e9s egyebek. A megold\u00e1snak rugalmasnak \u00e9s sk\u00e1l\u00e1zhat\u00f3nak kell lennie, \u00e9s k\u00e9pesnek kell lennie arra, hogy egyes\u00edtse az \u00f6sszes k\u00f6vetelm\u00e9nyt, amelyet jelenleg c\u00e9g\u00fcnkn\u00e9l az azonos\u00edt\u00f3broke \u2013 Keycloak \u2013 biztos\u00edt. <\/p>\n<p><img decoding=\"async\" alt=\"SSO mikroservizes architekt\u00far\u00e1val. A Keycloak-ot haszn\u00e1ljuk. 1. r\u00e9sz\" 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 \/>\nA Keycloak egy ny\u00edlt forr\u00e1sk\u00f3d\u00fa term\u00e9k, amely az azonos\u00edt\u00e1shoz \u00e9s a hozz\u00e1f\u00e9r\u00e9s-ellen\u0151rz\u00e9shez k\u00e9sz\u00fclt, \u00e9s a RedHat c\u00e9g t\u00e1mogatja. Ez a c\u00e9gn\u00e9l az SSO-t haszn\u00e1l\u00f3 term\u00e9kek alapj\u00e1t k\u00e9pezi \u2013 RH-SSO.<\/p>\n<h3>Alapfogalmak <\/h3>\n<p>\nMiel\u0151tt elkezden\u00e9nk foglalkozni a megold\u00e1sokkal \u00e9s megk\u00f6zel\u00edt\u00e9sekkel, tiszt\u00e1znunk kell a kifejez\u00e9seket \u00e9s a folyamatok sorrendj\u00e9t:<\/p>\n<p><img decoding=\"async\" alt=\"SSO mikroservizes architekt\u00far\u00e1val. A Keycloak-ot haszn\u00e1ljuk. 1. r\u00e9sz\" src=\"\/wp-content\/uploads\/2020\/02\/3a83d4364425aeed1019662fd1d5f152.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Azonos\u00edt\u00e1s<\/b> \u2014 ez egy elj\u00e1r\u00e1s, amely sor\u00e1n a szubjektumot az azonos\u00edt\u00f3j\u00e1n kereszt\u00fcl ismerj\u00fck fel (egyszer\u0171bben sz\u00f3lva, ez a n\u00e9v, bejelentkez\u00e9si n\u00e9v vagy sz\u00e1m meghat\u00e1roz\u00e1sa).<\/p>\n<p><b>Hiteles\u00edt\u00e9s<\/b> \u2014 ez egy hiteles\u00edt\u00e9si elj\u00e1r\u00e1s (a felhaszn\u00e1l\u00f3t jelsz\u00f3val ellen\u0151rzik, a levelet elektronikus al\u00e1\u00edr\u00e1ssal ellen\u0151rzik stb.)<\/p>\n<p><b>Enged\u00e9lyez\u00e9s<\/b> \u2014 ez a hozz\u00e1f\u00e9r\u00e9s biztos\u00edt\u00e1sa valamilyen er\u0151forr\u00e1shoz (p\u00e9ld\u00e1ul egy elektronikus lev\u00e9lhez).<\/p>\n<h4>A Keycloak azonos\u00edt\u00f3broke<\/h4>\n<p>\n<b>Keycloak<\/b> \u2014 ez egy ny\u00edlt forr\u00e1sk\u00f3d\u00fa azonos\u00edt\u00e1si \u00e9s hozz\u00e1f\u00e9r\u00e9s-vez\u00e9rl\u00e9si megold\u00e1s, amelyet olyan informatikai rendszerekhez terveztek, ahol mikroszerviz-architekt\u00fara mint\u00e1zatak\u00e9nt alkalmazhat\u00f3k.<\/p>\n<p>A Keycloak olyan funkci\u00f3kat k\u00edn\u00e1l, mint az egys\u00e9ges bejelentkez\u00e9s (SSO), az azonos\u00edt\u00f3broke \u00e9s a k\u00f6z\u00f6ss\u00e9gi bejelentkez\u00e9s, a felhaszn\u00e1l\u00f3k sz\u00f6vets\u00e9ge, a kliensadapterek, az adminisztr\u00e1tori konzol \u00e9s a felhaszn\u00e1l\u00f3i fi\u00f3k kezel\u0151 konzol.<\/p>\n<p>A Keycloak \u00e1ltal t\u00e1mogatott alapfunkcionalit\u00e1s:<\/p>\n<ul>\n<li>Single-Sign On \u00e9s Single-Sign Out webb\u00f6ng\u00e9sz\u0151s alkalmaz\u00e1sokhoz.<\/li>\n<li>OpenID\/OAuth 2.0\/SAML t\u00e1mogat\u00e1s.<\/li>\n<li>Identit\u00e1s k\u00f6zvet\u00edt\u00e9s \u2013 hiteles\u00edt\u00e9s k\u00fcls\u0151 OpenID Connect vagy SAML azonos\u00edt\u00f3 szolg\u00e1ltat\u00f3kkal.<\/li>\n<li>T\u00e1rsadalmi bejelentkez\u00e9s \u2013 a felhaszn\u00e1l\u00f3k azonos\u00edt\u00e1s\u00e1nak t\u00e1mogat\u00e1sa a Google, GitHub, Facebook, Twitter seg\u00edts\u00e9g\u00e9vel.<\/li>\n<li>Felhaszn\u00e1l\u00f3i feder\u00e1ci\u00f3 \u2013 felhaszn\u00e1l\u00f3k szinkroniz\u00e1l\u00e1sa LDAP \u00e9s Active Directory szerverekr\u0151l, valamint m\u00e1s azonos\u00edt\u00f3 szolg\u00e1ltat\u00f3kr\u00f3l.<\/li>\n<li>Kerberos-h\u00edd \u2013 a Kerberos szerver haszn\u00e1lata a felhaszn\u00e1l\u00f3k automatikus hiteles\u00edt\u00e9s\u00e9re.<\/li>\n<li>Adminisztr\u00e1tori konzol \u2013 a megold\u00e1s be\u00e1ll\u00edt\u00e1sainak \u00e9s param\u00e9tereinek egys\u00e9ges kezel\u00e9se Weben kereszt\u00fcl.<\/li>\n<li>Fi\u00f3kkezel\u00e9si konzol \u2013 a felhaszn\u00e1l\u00f3i profil \u00f6n\u00e1ll\u00f3 kezel\u00e9s\u00e9re.<\/li>\n<li>A megold\u00e1s testreszab\u00e1sa a v\u00e1llalat arculati elemei alapj\u00e1n.<\/li>\n<li>2FA hiteles\u00edt\u00e9s \u2013 TOTP\/HOTP t\u00e1mogat\u00e1s a Google Authenticator vagy FreeOTP r\u00e9v\u00e9n.<\/li>\n<li>Bejelentkez\u00e9si folyamatok \u2013 lehets\u00e9ges a felhaszn\u00e1l\u00f3k \u00f6nregisztr\u00e1ci\u00f3ja, jelsz\u00f3 helyre\u00e1ll\u00edt\u00e1sa \u00e9s vissza\u00e1ll\u00edt\u00e1sa, \u00e9s egy\u00e9b funkci\u00f3k.<\/li>\n<li>Munkamenet-kezel\u00e9s \u2013 az adminisztr\u00e1torok egyetlen pontb\u00f3l kezelhetik a felhaszn\u00e1l\u00f3i munkameneteket.<\/li>\n<li>Token-k\u00e9pz\u0151k \u2013 felhaszn\u00e1l\u00f3i attrib\u00fatumok, szerepek \u00e9s egy\u00e9b sz\u00fcks\u00e9ges attrib\u00fatumok hozz\u00e1rendel\u00e9se a tokenekhez.<\/li>\n<li>Rugalmas politika-kezel\u00e9s realm, alkalmaz\u00e1s \u00e9s felhaszn\u00e1l\u00f3k szerint.<\/li>\n<li>CORS t\u00e1mogat\u00e1s \u2013 a kliensadapterek be\u00e9p\u00edtett CORS t\u00e1mogat\u00e1ssal rendelkeznek.<\/li>\n<li>Szolg\u00e1ltat\u00f3 interf\u00e9szek (SPI) \u2013 sz\u00e1mos SPI, amely lehet\u0151v\u00e9 teszi a szerver m\u0171k\u00f6d\u00e9s\u00e9nek k\u00fcl\u00f6nb\u00f6z\u0151 aspektusainak konfigur\u00e1l\u00e1s\u00e1t: hiteles\u00edt\u00e9si folyamatok, azonos\u00edt\u00f3 szolg\u00e1ltat\u00f3k, protokollok p\u00e1ros\u00edt\u00e1sa \u00e9s sok m\u00e1s.<\/li>\n<li>JavaScript alkalmaz\u00e1sok, WildFly, JBoss EAP, Fuse, Tomcat, Jetty, Spring kliensadapterei.<\/li>\n<li>T\u00e1mogat\u00e1s k\u00fcl\u00f6nb\u00f6z\u0151 alkalmaz\u00e1sokkal, amelyek OpenID Connect Relying Party k\u00f6nyvt\u00e1rat vagy SAML 2.0 Szolg\u00e1ltat\u00f3 k\u00f6nyvt\u00e1rat haszn\u00e1lnak.<\/li>\n<li>Pluginok haszn\u00e1lat\u00e1val t\u00f6rt\u00e9n\u0151 b\u0151v\u00edthet\u0151s\u00e9g.<\/li>\n<\/ul>\n<p>\nA CI\/CD folyamatokhoz \u00e9s a Keycloak kezel\u00e9si folyamatainak automatiz\u00e1l\u00e1s\u00e1hoz REST API\/JAVA API haszn\u00e1lhat\u00f3. A dokument\u00e1ci\u00f3 elektronikus form\u00e1ban el\u00e9rhet\u0151: <\/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>V\u00e1llalati szint\u0171 azonos\u00edt\u00f3 szolg\u00e1ltat\u00f3k (On-Premise)<\/h4>\n<p>\nFelhaszn\u00e1l\u00f3k hiteles\u00edt\u00e9s\u00e9nek lehet\u0151s\u00e9ge User Federation szolg\u00e1ltat\u00e1sokon kereszt\u00fcl.<\/p>\n<p><img decoding=\"async\" alt=\"SSO mikroservizes architekt\u00far\u00e1val. A Keycloak-ot haszn\u00e1ljuk. 1. r\u00e9sz\" src=\"\/wp-content\/uploads\/2020\/02\/59bbeaf4630855467ddb003d52b0c1b6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSzint\u00e9n alkalmazhat\u00f3 a szintetikus hiteles\u00edt\u00e9s \u2013 ha a felhaszn\u00e1l\u00f3k Kerberos (LDAP vagy AD) munka\u00e1llom\u00e1sokon kereszt\u00fcl hiteles\u00edtik magukat, akkor automatikusan hiteles\u00edthet\u0151k a Keycloak-on an\u00e9lk\u00fcl, hogy \u00fajra meg kellene adniuk felhaszn\u00e1l\u00f3nev\u00fcket \u00e9s jelszavukat. <\/p>\n<p>A felhaszn\u00e1l\u00f3k hiteles\u00edt\u00e9s\u00e9hez \u00e9s tov\u00e1bbi enged\u00e9lyez\u00e9s\u00e9hez rel\u00e1ci\u00f3s adatb\u00e1zis-kezel\u0151 rendszer haszn\u00e1lhat\u00f3, ami a fejleszt\u00e9si k\u00f6rnyezetekben a legmegfelel\u0151bb, mivel nem ig\u00e9nyel hosszadalmas be\u00e1ll\u00edt\u00e1sokat \u00e9s integr\u00e1ci\u00f3kat a projektek korai f\u00e1zisaiban. Alap\u00e9rtelmez\u00e9s szerint a Keycloak be\u00e9p\u00edtett adatb\u00e1zist haszn\u00e1l a be\u00e1ll\u00edt\u00e1sok \u00e9s a felhaszn\u00e1l\u00f3i adatok t\u00e1rol\u00e1s\u00e1ra.<\/p>\n<p>A t\u00e1mogatott adatb\u00e1zisok list\u00e1ja sz\u00e9lesk\u00f6r\u0171, \u00e9s mag\u00e1ban foglalja: MS SQL, Oracle, PostgreSQL, MariaDB, Oracle \u00e9s m\u00e1sok. Jelenleg a legjobban teszteltek az Oracle 12C Release1 RAC \u00e9s a Galera 3.12 cluster a MariaDB 10.1.19-hez. <\/p>\n<h4>Az azonos\u00edt\u00f3 szolg\u00e1ltat\u00f3k \u2014 k\u00f6z\u00f6ss\u00e9gi bejelentkez\u00e9s <\/h4>\n<p>\nLehets\u00e9ges k\u00f6z\u00f6ss\u00e9gi h\u00e1l\u00f3zatokb\u00f3l val\u00f3 bejelentkez\u00e9s haszn\u00e1lata. Az a lehet\u0151s\u00e9g, hogy a felhaszn\u00e1l\u00f3kat hiteles\u00edteni lehessen, a Keycloak adminisztr\u00e1tori konzolj\u00e1n aktiv\u00e1lhat\u00f3. Az alkalmaz\u00e1sok k\u00f3dj\u00e1ban nem sz\u00fcks\u00e9ges v\u00e1ltoztatni, \u00e9s ez a funkci\u00f3 \"do-it-yourself\" el\u00e9rhet\u0151, b\u00e1rmely projektmegval\u00f3s\u00edt\u00e1si f\u00e1zisban aktiv\u00e1lhat\u00f3.<\/p>\n<p><img decoding=\"async\" alt=\"SSO mikroservizes architekt\u00far\u00e1val. A Keycloak-ot haszn\u00e1ljuk. 1. r\u00e9sz\" src=\"\/wp-content\/uploads\/2020\/02\/546ddea10c79662ca37a448d3dfc1fd0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA felhaszn\u00e1l\u00f3k hiteles\u00edt\u00e9s\u00e9hez OpenID\/SAML azonos\u00edt\u00f3 szolg\u00e1ltat\u00f3k haszn\u00e1lata lehets\u00e9ges.<\/p>\n<h3>A Keycloakban OAuth2 haszn\u00e1lat\u00e1val t\u00f6rt\u00e9n\u0151 enged\u00e9lyez\u00e9si forgat\u00f3k\u00f6nyvek t\u00edpusa<\/h3>\n<p>\n<b>Enged\u00e9lyez\u00e9si k\u00f3d folyamat <\/b> \u2014 szerveroldali alkalmaz\u00e1sokkal haszn\u00e1latos. Ez az egyik legelterjedtebb enged\u00e9lyez\u00e9si t\u00edpus, mivel j\u00f3l illeszkedik a szerveroldali alkalmaz\u00e1sokhoz, ahol az alkalmaz\u00e1s forr\u00e1sk\u00f3dja \u00e9s az \u00fcgyf\u00e9ladatai nem hozz\u00e1f\u00e9rhet\u0151ek harmadik felek sz\u00e1m\u00e1ra. Ez esetben a folyamat \u00e1tir\u00e1ny\u00edt\u00e1son (redirection) alapul. Az alkalmaz\u00e1snak k\u00e9pesnek kell lennie interakci\u00f3ba l\u00e9pni a felhaszn\u00e1l\u00f3i \u00fcgyn\u00f6kkel (user-agent), p\u00e9ld\u00e1ul egy webb\u00f6ng\u00e9sz\u0151vel, hogy megszerezze a felhaszn\u00e1l\u00f3i \u00fcgyn\u00f6k\u00f6n kereszt\u00fcl \u00e1tir\u00e1ny\u00edtott API enged\u00e9lyez\u00e9si k\u00f3dokat.<\/p>\n<p><b>Implicit folyamat<\/b> \u2014 mobil vagy webb\u00f6ng\u00e9sz\u0151 alkalmaz\u00e1sok (felhaszn\u00e1l\u00f3i eszk\u00f6z\u00f6k\u00f6n fut\u00f3 alkalmaz\u00e1sok) haszn\u00e1lj\u00e1k.<\/p>\n<p>Az implicit enged\u00e9lyez\u00e9si t\u00edpus mobil- \u00e9s webalkalmaz\u00e1sokban haszn\u00e1latos, ahol az \u00fcgyf\u00e9l adatainak v\u00e9delme nem garant\u00e1lhat\u00f3. Az implicit enged\u00e9lyez\u00e9si t\u00edpus a felhaszn\u00e1l\u00f3i \u00fcgyn\u00f6k \u00e1tir\u00e1ny\u00edt\u00e1s\u00e1t is alkalmazza, amely sor\u00e1n a hozz\u00e1f\u00e9r\u00e9si token \u00e1tkonvert\u00e1l\u00f3dik a felhaszn\u00e1l\u00f3i \u00fcgyn\u00f6knek, hogy tov\u00e1bbi felhaszn\u00e1l\u00e1sra ker\u00fclj\u00f6n az alkalmaz\u00e1sban. Ez lehet\u0151v\u00e9 teszi a token hozz\u00e1f\u00e9r\u00e9s\u00e9t a felhaszn\u00e1l\u00f3 \u00e9s m\u00e1s alkalmaz\u00e1sok sz\u00e1m\u00e1ra a felhaszn\u00e1l\u00f3 eszk\u00f6z\u00e9n. Ebben az enged\u00e9lyez\u00e9si t\u00edpusban az alkalmaz\u00e1s hiteles\u00edt\u00e9se nem t\u00f6rt\u00e9nik meg, a folyamat a kor\u00e1bban a szolg\u00e1ltat\u00e1sban regisztr\u00e1lt \u00e1tir\u00e1ny\u00edt\u00e1si URL-re t\u00e1maszkodik.<\/p>\n<p>Az implicit \u00e1raml\u00e1s nem t\u00e1mogatja a hozz\u00e1f\u00e9r\u00e9si token friss\u00edt\u0151 tokenjeit (refresh tokens).<br \/>\n<br \/>\n<b>\u00dcgyf\u00e9leszk\u00f6z\u00f6k Hozz\u00e1f\u00e9r\u00e9si \u00c1raml\u00e1s<\/b> \u2014 az alkalmaz\u00e1s API-hoz val\u00f3 hozz\u00e1f\u00e9r\u00e9s\u00e9n\u00e9l haszn\u00e1latos. Ez az enged\u00e9lyez\u00e9si t\u00edpus \u00e1ltal\u00e1ban a 'szerver-szerver' interakci\u00f3k sor\u00e1n elterjedt, melyeknek a h\u00e1tt\u00e9rben kell futniuk, an\u00e9lk\u00fcl, hogy azonnali felhaszn\u00e1l\u00f3i interakci\u00f3ra lenne sz\u00fcks\u00e9g. Az \u00fcgyf\u00e9leszk\u00f6z\u00f6k hozz\u00e1f\u00e9r\u00e9si \u00e1raml\u00e1sa lehet\u0151v\u00e9 teszi a webszolg\u00e1ltat\u00e1snak (bizalmas kliens) a saj\u00e1t hiteles\u00edt\u0151 adatai haszn\u00e1lat\u00e1t a felhaszn\u00e1l\u00f3 azonos\u00edt\u00e1sa helyett egy m\u00e1sik webszolg\u00e1ltat\u00e1s hiteles\u00edt\u00e9s\u00e9hez. Magasabb biztons\u00e1gi szint el\u00e9r\u00e9se \u00e9rdek\u00e9ben a h\u00edv\u00f3 szolg\u00e1ltat\u00e1s tan\u00fas\u00edtv\u00e1nyt (a k\u00f6z\u00f6ns\u00e9ges titok helyett) haszn\u00e1lhat hiteles\u00edt\u0151 adatk\u00e9nt.<\/p>\n<p>Az OAuth2 specifik\u00e1ci\u00f3ja a k\u00f6vetkez\u0151 c\u00edmen tal\u00e1lhat\u00f3: <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 \u00e9s el\u0151nyei<\/h3>\n<p>\nA JWT (JSON Web Token) egy ny\u00edlt szabv\u00e1ny (<noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc7519\">https:\/\/tools.ietf.org\/html\/rfc7519<\/a><\/noindex>), amely egy kompakt \u00e9s \u00f6n\u00e1ll\u00f3 m\u00f3dot hat\u00e1roz meg az inform\u00e1ci\u00f3k biztons\u00e1gos tov\u00e1bb\u00edt\u00e1s\u00e1ra a felek k\u00f6z\u00f6tt JSON-objektum form\u00e1j\u00e1ban.<\/p>\n<p>A szabv\u00e1ny szerint a token h\u00e1rom r\u00e9szb\u0151l \u00e1ll, base-64 form\u00e1tumban, pontokkal elv\u00e1lasztva. Az els\u0151 r\u00e9sz a fejl\u00e9c (header), amely tartalmazza a token t\u00edpus\u00e1t \u00e9s a digit\u00e1lis al\u00e1\u00edr\u00e1s megszerz\u00e9s\u00e9hez sz\u00fcks\u00e9ges hash algoritmus nev\u00e9t. A m\u00e1sodik r\u00e9sz a f\u0151inform\u00e1ci\u00f3t t\u00e1rolja (felhaszn\u00e1l\u00f3, attrib\u00fatumok stb.). A harmadik r\u00e9sz a digit\u00e1lis al\u00e1\u00edr\u00e1s.<\/p>\n<p>..<br \/>\nSoha ne t\u00e1rolja a tokent az adatb\u00e1zis\u00e1ban. Mert egy \u00e9rv\u00e9nyes token egyen\u00e9rt\u00e9k\u0171 egy jelsz\u00f3val; a token t\u00e1rol\u00e1sa olyan, mintha a jelsz\u00f3t ny\u00edlt form\u00e1ban t\u00e1roln\u00e1.<br \/>\n<b>Hozz\u00e1f\u00e9r\u00e9si token <\/b>\u2014 ez egy token, amely hozz\u00e1f\u00e9r\u00e9st biztos\u00edt a tulajdonos\u00e1nak a szerver v\u00e9dett er\u0151forr\u00e1saihoz. \u00c1ltal\u00e1ban r\u00f6vid \u00e9lettartammal rendelkezik, \u00e9s tartalmazhat tov\u00e1bbi inform\u00e1ci\u00f3kat, p\u00e9ld\u00e1ul a k\u00e9r\u0151 IP-c\u00edm\u00e9t.<\/p>\n<p><b>Friss\u00edt\u0151 token <\/b>\u2014 ez egy token, amely lehet\u0151v\u00e9 teszi a kliensek sz\u00e1m\u00e1ra, hogy \u00faj access tokeneket k\u00e9rjenek az \u00e9lettartamuk lej\u00e1rta ut\u00e1n. Ezek a tokenek \u00e1ltal\u00e1ban hosszabb id\u0151re ker\u00fclnek kiad\u00e1sra.<\/p>\n<p>A mikroszolg\u00e1ltat\u00e1s-architekt\u00far\u00e1ban val\u00f3 alkalmaz\u00e1s f\u0151 el\u0151nyei:<\/p>\n<ul>\n<li>Lehet\u0151s\u00e9g k\u00fcl\u00f6nb\u00f6z\u0151 alkalmaz\u00e1sok \u00e9s szolg\u00e1ltat\u00e1sok el\u00e9r\u00e9s\u00e9re egyszeri hiteles\u00edt\u00e9ssel.<\/li>\n<li>Ha a felhaszn\u00e1l\u00f3i profilban hi\u00e1nyoznak bizonyos sz\u00fcks\u00e9ges attrib\u00fatumok, az adatok kieg\u00e9sz\u00edthet\u0151k, bele\u00e9rtve az automatiz\u00e1lt \u00e9s \"val\u00f3s idej\u0171\" hozz\u00e1ad\u00e1st is.<\/li>\n<li>Nincs sz\u00fcks\u00e9g az akt\u00edv munkamenetek inform\u00e1ci\u00f3inak t\u00e1rol\u00e1s\u00e1ra, a kiszolg\u00e1l\u00f3 alkalmaz\u00e1snak csak a al\u00e1\u00edr\u00e1st kell ellen\u0151riznie.<\/li>\n<li>Rugalmasabb hozz\u00e1f\u00e9r\u00e9s-kezel\u00e9s a hasznos terhel\u00e9sben szerepl\u0151 tov\u00e1bbi attrib\u00fatumok r\u00e9v\u00e9n.<\/li>\n<li>A token al\u00e1\u00edr\u00e1s\u00e1nak alkalmaz\u00e1sa a fejl\u00e9cben \u00e9s a hasznos terhel\u00e9sben n\u00f6veli az eg\u00e9sz megold\u00e1s biztons\u00e1g\u00e1t.<\/li>\n<\/ul>\n<p><\/p>\n<h3>JWT token \u2014 \u00f6sszet\u00e9tel<\/h3>\n<p>\n<b>A fejl\u00e9c<\/b> \u2014 alap\u00e9rtelmezetten, a fejl\u00e9c csak a token t\u00edpus\u00e1t \u00e9s a titkos\u00edt\u00e1shoz haszn\u00e1lt algoritmust tartalmazza.<\/p>\n<p>A token t\u00edpusa a \"typ\" kulcsban t\u00e1rol\u00f3dik. A \"typ\" kulcsot a JWT nem veszi figyelembe. Ha a \"typ\" kulcs jelen van, az \u00e9rt\u00e9k\u00e9nek JWT-nek kell lennie, hogy jelezze, hogy ez az objektum egy JSON Web Token.<\/p>\n<p>A m\u00e1sodik \"alg\" kulcs hat\u00e1rozza meg a token titkos\u00edt\u00e1s\u00e1hoz haszn\u00e1lt algoritmust. Alap\u00e9rtelmezetten ezt HS256-ra kell \u00e1ll\u00edtani. A fejl\u00e9c base64 k\u00f3dolva van.<\/p>\n<p>{ \"alg\": \"HS256\", \"typ\": \"JWT\"}<br \/>\n<b>Payload (tartalom)<\/b> \u2014 a hasznos terhel\u00e9sben b\u00e1rmilyen inform\u00e1ci\u00f3t t\u00e1rolunk, amelyet ellen\u0151rizni kell. Minden kulcs a hasznos terhel\u00e9sben \"\u00e1ll\u00edt\u00e1snak\" nevezett elem. P\u00e9ld\u00e1ul, a bel\u00e9p\u00e9shez a rendszerbe csak megh\u00edv\u00e1s sz\u00fcks\u00e9ges (z\u00e1rtk\u00f6r\u0171 prom\u00f3ci\u00f3). Amikor valakit szeretn\u00e9nk megh\u00edvni, emailt k\u00fcld\u00fcnk neki a megh\u00edv\u00f3val. Fontos ellen\u0151rizni, hogy az email c\u00edm az a szem\u00e9ly\u00e9, aki elfogadja a megh\u00edv\u00e1st, ez\u00e9rt ezt a c\u00edmet be\u00e9p\u00edtj\u00fck a hasznos terhel\u00e9sbe, a \"e-mail\" kulcsban t\u00e1rolva.<\/p>\n<p>{ \"email\": \"example@x5.hu\" }<br \/>\n<br \/>\nA payloadban a kulcsok \u00f6nk\u00e9nyesek lehetnek. Azonban van n\u00e9h\u00e1ny fenntartott:<\/p>\n<ul>\n<li>iss (Issuer) \u2014 meghat\u00e1rozza az alkalmaz\u00e1st, amelyb\u0151l a token elk\u00fcld\u00e9sre ker\u00fcl.<\/li>\n<li>sub (T\u00e9ma) \u2014 meghat\u00e1rozza a token t\u00e9m\u00e1j\u00e1t.<\/li>\n<li>aud (C\u00e9lcsoport) \u2013 egy \u00e9rz\u00e9keny nagybet\u0171-re kisbet\u0171re sorokb\u00f3l \u00e1ll\u00f3 t\u00f6mb vagy URI, amely a token c\u00edmzettjeinek list\u00e1j\u00e1t k\u00e9pezi. Amikor a c\u00edmzett megkap egy JWT-t ezzel a kulccsal, ellen\u0151riznie kell, hogy benne van-e a c\u00edmzettek k\u00f6z\u00f6tt \u2014 k\u00fcl\u00f6nben figyelmen k\u00edv\u00fcl kell hagynia a tokent.<\/li>\n<li>exp (Lej\u00e1rati id\u0151) \u2014 megadja, mikor j\u00e1r le a token \u00e9rv\u00e9nyess\u00e9ge. A JWT szabv\u00e1ny megk\u00f6veteli, hogy minden megval\u00f3s\u00edt\u00e1s eset\u00e9n az lej\u00e1rt tokeneket el kell utas\u00edtani. Az exp kulcsnak unix id\u0151b\u00e9lyegnek kell lennie.<\/li>\n<li>nbf (Nem kor\u00e1bban) \u2014 ez egy unix id\u0151b\u00e9lyeg, amely meghat\u00e1rozza azt az id\u0151pontot, amikor a token \u00e9rv\u00e9nyes lesz.<\/li>\n<li>iat (Kibocs\u00e1t\u00e1s ideje) \u2014 ez a kulcs azt az id\u0151t jel\u00f6li, amikor a tokent kiadt\u00e1k, \u00e9s felhaszn\u00e1lhat\u00f3 a JWT kor\u00e1nak meghat\u00e1roz\u00e1s\u00e1hoz. Az iat kulcsnak unix id\u0151b\u00e9lyegnek kell lennie.<\/li>\n<li>Jti (JWT azonos\u00edt\u00f3) \u2014 egy karakterl\u00e1nc, amely meghat\u00e1rozza ennek a tokennek az egyedi azonos\u00edt\u00f3j\u00e1t nagybet\u0171s \u00e9rz\u00e9kenys\u00e9ggel.<\/li>\n<\/ul>\n<p>\nFontos meg\u00e9rteni, hogy a hasznos adatokat nem titkos\u00edtva tov\u00e1bb\u00edtj\u00e1k (b\u00e1r a tokenek lehetnek be\u00e1gyazottak, \u00e9s ekkor titkos\u00edtott adatokat is lehet tov\u00e1bb\u00edtani). Ez\u00e9rt ebben nem t\u00e1rolhat\u00f3 semmilyen titkos inform\u00e1ci\u00f3. A hasznos adatokat, ak\u00e1rcsak a fejl\u00e9cet, base64 k\u00f3dol\u00e1ssal \u00edrj\u00e1k.<br \/>\n<b>Al\u00e1\u00edr\u00e1s<\/b> \u2014 amikor megvan a fejl\u00e9c \u00e9s a payload, kisz\u00e1m\u00edthat\u00f3 az al\u00e1\u00edr\u00e1s.<\/p>\n<p>A base64 k\u00f3doltakat haszn\u00e1lj\u00e1k: a fejl\u00e9cet \u00e9s a payloadot, amelyek egy ponton kereszt\u00fcl \u00f6sszevon\u00e1sra ker\u00fclnek. Ezut\u00e1n ez a sztring \u00e9s a titkos kulcs bemenetet k\u00e9pez a fejl\u00e9cben megadott titkos\u00edt\u00e1si algoritmusnak (\"alg\" kulcs). A kulcs lehet b\u00e1rmilyen karakterl\u00e1nc. A hosszabb karakterl\u00e1ncok a legjobbak, mivel hosszabb id\u0151be telik a kital\u00e1l\u00e1suk.<\/p>\n<p>{\"alg\":\"RSA1_5\",\"payload\":\"A128CBC-HS256\"}<\/p>\n<h3>A Keycloak megb\u00edzhat\u00f3 klaszter\u00e9nek architekt\u00far\u00e1ja<\/h3>\n<p>\nEgyetlen klaszter haszn\u00e1lata az \u00f6sszes projekthez magasabb k\u00f6vetelm\u00e9nyeket t\u00e1maszt az SSO megold\u00e1s\u00e1val szemben. Amikor a projektek sz\u00e1ma alacsony, ezek a k\u00f6vetelm\u00e9nyek nem \u00e9rz\u0151dnek olyan er\u0151teljesen, de a felhaszn\u00e1l\u00f3k \u00e9s integr\u00e1ci\u00f3k sz\u00e1m\u00e1nak n\u00f6veked\u00e9s\u00e9vel a rendelkez\u00e9sre \u00e1ll\u00e1sra \u00e9s teljes\u00edtm\u00e9nyre vonatkoz\u00f3 k\u00f6vetelm\u00e9nyek emelkednek. <\/p>\n<p>A megn\u00f6vekedett SSO meghib\u00e1sod\u00e1si kock\u00e1zatok emelik az architekt\u00fara \u00e9s az alkalmazott komponensment\u0151 m\u00f3dszerek k\u00f6vetelm\u00e9nyeit, \u00e9s nagyon szigor\u00fa SLA-hoz vezetnek. Ennek k\u00f6vetkezm\u00e9nyek\u00e9nt a megold\u00e1sok fejleszt\u00e9se vagy korai bevezet\u00e9si szakasz\u00e1ban a projektek saj\u00e1t, nem hibat\u0171r\u0151 infrastrukt\u00far\u00e1t ig\u00e9nyelnek. A fejl\u0151d\u00e9s sor\u00e1n sz\u00fcks\u00e9ges a fejleszt\u00e9si \u00e9s sk\u00e1l\u00e1z\u00e1si lehet\u0151s\u00e9gek be\u00e9p\u00edt\u00e9se. A hibat\u0171r\u0151 klaszter legflexibilisebb fel\u00e9p\u00edt\u00e9se kont\u00e9ner virtualiz\u00e1ci\u00f3val vagy hibrid megk\u00f6zel\u00edt\u00e9ssel t\u00f6rt\u00e9nik. <\/p>\n<p>Az Active\/Active \u00e9s Active\/Passive klaszter \u00fczemeltet\u00e9s\u00e9hez biztos\u00edtani kell az adatok konzisztenci\u00e1j\u00e1t a rel\u00e1ci\u00f3s adatb\u00e1zisban \u2014 mindk\u00e9t adatb\u00e1zis csom\u00f3pontot szinkronosan kell replik\u00e1lni a k\u00fcl\u00f6nb\u00f6z\u0151 f\u00f6ldrajzilag elosztott adatk\u00f6zpontok k\u00f6z\u00f6tt.<\/p>\n<p>A hibat\u0171r\u0151 telep\u00edt\u00e9s legegyszer\u0171bb p\u00e9ld\u00e1ja.<\/p>\n<p><img decoding=\"async\" alt=\"SSO mikroservizes architekt\u00far\u00e1val. A Keycloak-ot haszn\u00e1ljuk. 1. r\u00e9sz\" src=\"\/wp-content\/uploads\/2020\/02\/c0df30a07e7dda5ae892a1fca3790a45.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMilyen el\u0151ny\u00f6ket ny\u00fajt egyetlen klaszter haszn\u00e1lata:<\/p>\n<ul>\n<li>Magas rendelkez\u00e9sre \u00e1ll\u00e1s \u00e9s teljes\u00edtm\u00e9ny.<\/li>\n<li>T\u00e1mogatja a m\u0171k\u00f6d\u00e9si m\u00f3dokat: Active\/Active, Active\/Passive.<\/li>\n<li>Dinamikus sk\u00e1l\u00e1z\u00e1s lehet\u0151s\u00e9ge \u2014 kont\u00e9ner virtualiz\u00e1ci\u00f3 alkalmaz\u00e1sakor.<\/li>\n<li>K\u00f6zpontos\u00edtott kezel\u00e9si \u00e9s monitoroz\u00e1si lehet\u0151s\u00e9g.<\/li>\n<li>Egys\u00e9ges megk\u00f6zel\u00edt\u00e9s az azonos\u00edt\u00e1s \/ hiteles\u00edt\u00e9s \/ felhaszn\u00e1l\u00f3i jogosults\u00e1gok kezel\u00e9s\u00e9re a projektekben.<\/li>\n<li>\u00c1tl\u00e1that\u00f3bb egy\u00fcttm\u0171k\u00f6d\u00e9s k\u00fcl\u00f6nb\u00f6z\u0151 projektek k\u00f6z\u00f6tt felhaszn\u00e1l\u00f3i beavatkoz\u00e1s n\u00e9lk\u00fcl.<\/li>\n<li>A JWT tokenek t\u00f6bb projektben val\u00f3 \u00fajrahaszn\u00e1l\u00e1s\u00e1nak lehet\u0151s\u00e9ge.<\/li>\n<li>Egys\u00e9ges bizalmi pont.<\/li>\n<li>Gyorsabb projektind\u00edt\u00e1s mikroszolg\u00e1ltat\u00e1sok \/ kont\u00e9ner virtualiz\u00e1ci\u00f3 haszn\u00e1lat\u00e1val (nem sz\u00fcks\u00e9ges tov\u00e1bbi \u00f6sszetev\u0151k telep\u00edt\u00e9se \u00e9s be\u00e1ll\u00edt\u00e1sa).<\/li>\n<li>Lehets\u00e9ges kereskedelmi t\u00e1mogat\u00e1s v\u00e1s\u00e1rl\u00e1sa a gy\u00e1rt\u00f3t\u00f3l. <\/li>\n<\/ul>\n<p><\/p>\n<h3>Mire \u00e9rdemes figyelni a klaszter tervez\u00e9sekor<\/h3>\n<p><\/p>\n<h4>DBMS<\/h4>\n<p>\nA Keycloak DBMS kezel\u0151rendszert haszn\u00e1l a k\u00f6vetkez\u0151k t\u00e1rol\u00e1s\u00e1ra: realms, clients, users stb.<br \/>\nSz\u00e9les spektrum\u00fa DBMS-ek t\u00e1mogatottak: MS SQL, Oracle, MySQL, PostgreSQL. A Keycloak saj\u00e1t be\u00e9p\u00edtett rel\u00e1ci\u00f3s adatb\u00e1zissal ker\u00fcl forgalomba. Aj\u00e1nlott nem t\u00falterhelt k\u00f6rnyezetekben haszn\u00e1lni \u2013 mint p\u00e9ld\u00e1ul fejleszt\u00e9si k\u00f6rnyezetekben.<\/p>\n<p>Az Active\/Active \u00e9s Active\/Passive klaszter \u00fczemeltet\u00e9s\u00e9hez biztos\u00edtani kell az adatok konzisztenci\u00e1j\u00e1t a rel\u00e1ci\u00f3s adatb\u00e1zisban, \u00e9s a klaszter mindk\u00e9t csom\u00f3pontj\u00e1nak szinkron m\u00f3don kell replik\u00e1lnia az adatk\u00f6zpontok k\u00f6z\u00f6tt.<\/p>\n<h4>Elosztott gyors\u00edt\u00f3t\u00e1r (Infinispan)<\/h4>\n<p>\nA klaszter megfelel\u0151 m\u0171k\u00f6d\u00e9s\u00e9hez sz\u00fcks\u00e9ges a k\u00f6vetkez\u0151 t\u00edpus\u00fa gyors\u00edt\u00f3t\u00e1rak tov\u00e1bbi szinkroniz\u00e1l\u00e1sa a JBoss Data Grid haszn\u00e1lat\u00e1val:<\/p>\n<p>Hiteles\u00edt\u00e9si munkamenetek \u2014 az adott felhaszn\u00e1l\u00f3 hiteles\u00edt\u00e9si adatainak meg\u0151rz\u00e9s\u00e9re haszn\u00e1lj\u00e1k. Ennek a gyors\u00edt\u00f3t\u00e1rnak a k\u00e9rd\u00e9sei \u00e1ltal\u00e1ban csak a b\u00f6ng\u00e9sz\u0151t \u00e9s a Keycloak kiszolg\u00e1l\u00f3t tartalmazz\u00e1k, a nem alkalmaz\u00e1s r\u00e9sz\u00e9t.<\/p>\n<p>Akci\u00f3tokenek \u2014 olyan forgat\u00f3k\u00f6nyvekhez haszn\u00e1latosak, amikor a felhaszn\u00e1l\u00f3nak sz\u00fcks\u00e9ge van egy m\u0171velet meger\u0151s\u00edt\u00e9s\u00e9re aszinkron m\u00f3don (e-mailben). P\u00e9ld\u00e1ul a jelsz\u00f3-vissza\u00e1ll\u00edt\u00e1si folyamat sor\u00e1n a gyors\u00edt\u00f3t\u00e1r actionTokens Infinispan m\u00f3dot k\u00f6veti az akci\u00f3khoz kapcsol\u00f3d\u00f3 metaadatok nyomon k\u00f6vet\u00e9s\u00e9ben, amelyek m\u00e1r felhaszn\u00e1l\u00e1sra ker\u00fcltek, ez\u00e9rt nem lehet \u0151ket \u00fajra felhaszn\u00e1lni.<\/p>\n<p>Tart\u00f3s adatok gyors\u00edt\u00f3t\u00e1raz\u00e1sa \u00e9s \u00e9rv\u00e9nytelen\u00edt\u00e9se \u2013 a tart\u00f3s adatok gyors\u00edt\u00f3t\u00e1raz\u00e1s\u00e1ra haszn\u00e1lj\u00e1k, hogy elker\u00fclj\u00e9k a sz\u00fcks\u00e9gtelen adatb\u00e1zis-k\u00e9r\u00e9seket. Amikor b\u00e1rmely Keycloak kiszolg\u00e1l\u00f3 friss\u00edti az adatokat, az \u00f6sszes t\u00f6bbi Keycloak kiszolg\u00e1l\u00f3nak az \u00f6sszes adatk\u00f6zpontban tudnia kell err\u0151l.<\/p>\n<p>Munka \u2014 csak a gyors\u00edt\u00f3t\u00e1r invalid\u00e1ci\u00f3s \u00e9rtes\u00edt\u00e9seinek k\u00fcld\u00e9s\u00e9re szolg\u00e1l a klaszter \u00e9s az adatk\u00f6zpontok k\u00f6z\u00f6tt. <\/p>\n<p>Felhaszn\u00e1l\u00f3i munkamenetek \u2014 a felhaszn\u00e1l\u00f3i munkamenet adataik meg\u0151rz\u00e9s\u00e9re haszn\u00e1lj\u00e1k, amelyek \u00e9rv\u00e9nyesek a felhaszn\u00e1l\u00f3 b\u00f6ng\u00e9sz\u00e9si munkamenete alatt. A gyors\u00edt\u00f3t\u00e1rnak kezelnie kell a v\u00e9gfelhaszn\u00e1l\u00f3i \u00e9s alkalmaz\u00e1si HTTP-k\u00e9r\u00e9seket. <\/p>\n<p>Bruteforce v\u00e9delem \u2014 az azonos\u00edtatlan bejelentkez\u00e9si k\u00eds\u00e9rletek adatainak nyomon k\u00f6vet\u00e9s\u00e9re haszn\u00e1lj\u00e1k. <\/p>\n<h4>A terhel\u00e9seloszt\u00e1s<\/h4>\n<p>\nA terhel\u00e9seloszt\u00f3 a Keycloak egyetlen bel\u00e9p\u00e9si pontja, \u00e9s t\u00e1mogatnia kell a sticky sessions-t. <\/p>\n<h4>Alkalmaz\u00e1s kiszolg\u00e1l\u00f3k<\/h4>\n<p>\nAz \u00f6sszetev\u0151k k\u00f6z\u00f6tti interakci\u00f3k ellen\u0151rz\u00e9s\u00e9re haszn\u00e1lj\u00e1k, \u00e9s virtualiz\u00e1lhat\u00f3k vagy kont\u00e9neriz\u00e1lhat\u00f3k a megl\u00e9v\u0151 automatiz\u00e1l\u00e1si eszk\u00f6z\u00f6kkel \u00e9s infrastrukt\u00fara automatiz\u00e1l\u00e1si dinamikus sk\u00e1l\u00e1z\u00e1s\u00e1val. A leggyakoribb telep\u00edt\u00e9si forgat\u00f3k\u00f6nyvek az OpenShift, Kubernates, Rancher.<\/p>\n<p>Ezzel v\u00e9get \u00e9rt az els\u0151, elm\u00e9leti r\u00e9sz. A k\u00f6vetkez\u0151 ciklusokban k\u00fcl\u00f6nb\u00f6z\u0151 azonos\u00edt\u00f3 szolg\u00e1ltat\u00f3kkal v\u00e9gzett integr\u00e1ci\u00f3s p\u00e9ld\u00e1kat \u00e9s be\u00e1ll\u00edt\u00e1si p\u00e9ld\u00e1kat fogunk \u00e1ttekinteni.<br \/>\n<br \/>Forr\u00e1s: <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 5.0.3 - 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.\" \/>\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\/hu\/blog\/sso-na-mikroservisnoj-arhitekture-ispolzuem-keycloak-chast-%e2%84%961\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/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 mikroszolg\u00e1ltat\u00e1s-architekt\u00far\u00e1ban. Keycloakot haszn\u00e1lunk. 1. r\u00e9sz | ProHoster","description":"B\u00e1rmely nagyv\u00e1llalatn\u00e1l, \u00e9s az X5 Retail Group sem kiv\u00e9tel, a fejl\u0151d\u00e9s sor\u00e1n n\u00f6vekszik a projektek sz\u00e1ma, ahol felhaszn\u00e1l\u00f3i enged\u00e9lyez\u00e9s sz\u00fcks\u00e9ges.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/sso-na-mikroservisnoj-arhitekture-ispolzuem-keycloak-chast-%e2%84%961","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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.","og:url":"https:\/\/prohoster.info\/hu\/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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/40865","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=40865"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/40865\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/40866"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=40865"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=40865"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=40865"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}