SSO i luga o le fausaga microservice. Matou te faʻaaogaina Keycloak. Vaega #1

I totonu o soʻo se kamupani tele, ma le X5 Retail Group e leai se faʻalavelave, aʻo faʻalauteleina, o le numera o galuega faatino e manaʻomia ai le faʻatagaina o tagata e faʻateleina. I le aluga o taimi, e manaʻomia le faʻaogaina o le faʻaogaina o tagata faʻaoga mai le tasi talosaga i le isi, ona manaʻomia ai lea o le faʻaaogaina o se server Single-Sing-On (SSO). Ae fa'afefea pe a o'o ina fa'aaoga e fa'asinomaga e pei ole AD po'o isi e leai ni uiga fa'aopoopo i galuega eseese. O se vasega o faiga e ta'ua o "tagata fai fa'amatalaga" o le a sau e laveai. O le tele o galuega o ona sui, e pei o Keycloak, Gravitee Access management, ma isi. O le tele o taimi, faʻaoga mataupu e mafai ona ese: fegalegaleaiga masini, auai tagata faʻaoga, ma isi. ma o ia fofo o loʻo i ai nei i le matou kamupani se faʻamatalaga faʻamaonia - Keycloak.

SSO i luga o le fausaga microservice. Matou te faʻaaogaina Keycloak. Vaega #1

Keycloak o se faʻamatalaga faʻamatalaga matala ma le faʻaogaina o mea e pulea e RedHat. O le fa'avae mo oloa a le kamupani e fa'aaoga SSO - RH-SSO.

Faʻamatalaga autu

Ae e te leʻi amata faʻatautaia fofo ma auala, e tatau ona e filifili i tulaga ma faʻasologa o gaioiga:

SSO i luga o le fausaga microservice. Matou te faʻaaogaina Keycloak. Vaega #1

Fa'ailoaga o se faiga mo le iloaina o se mataupu e ala i lona faailoaina (i se isi faaupuga, o le fuafuaina lea o se igoa, login po o se numera).

Fa'amaoni - o se faʻamaoniga faʻamaonia (e siakiina le tagata faʻaoga i se faʻaupuga, siaki le tusi i se saini eletise, ma isi)

Faatagaina - o le tuʻuina atu lea o le avanoa i se punaoa (mo se faʻataʻitaʻiga, i-meli).

Identity Broker Keycloak

'oloa ki o se faʻamatalaga faʻamatalaga matala ma le faʻaogaina o le faʻaogaina o fofo ua fuafuaina mo le faʻaogaina i le IS lea e mafai ona faʻaogaina ai mamanu faʻataʻitaʻiga microservice.

Keycloak e ofoina atu foliga e pei ole saini e tasi (SSO), faʻasinomaga faʻasalalau ma fesoʻotaʻiga faʻaagafesootai, faʻalapotopotoga faʻaoga, tagata faʻapipiʻi tagata faʻatau, faʻamafanafanaga pulega ma faʻamafanafanaga pulega faʻamatalaga.

Galuega fa'avae e lagolagoina i Keycloak:

  • Tasi-Saini i luga ma Tasi-Saini i fafo mo talosaga su'esu'e.
  • Lagolago mo OpenID/OAuth 2.0/SAML.
  • Identity Brokering - fa'amaoni e fa'aaoga ai fafo OpenID Connect po'o SAML fa'asinomaga tu'uina atu.
  • Social Login - lagolago mo Google, GitHub, Facebook, Twitter mo le faʻaogaina o tagata.
  • User Federation - tu'ufa'atasiga o tagata fa'aoga mai le LDAP ma le Active Directory servers ma isi tagata e tu'uina atu fa'amatalaga.
  • Alalaupapa Kerberos - fa'aogaina le 'au'aunaga a Kerberos mo le fa'amaoni fa'aoga otometi.
  • Admin Console - mo pulega autasi o fa'atulagaga ma filifiliga fofo e ala ile Upega.
  • Account Management Console – mo le pulega tuto'atasi o tagata fa'aoga.
  • Fa'asinomaga o le fofo e fa'atatau i le fa'asinomaga fa'atasi a le kamupani.
  • 2FA Authentication - TOTP / HOTP lagolago e faʻaaoga ai Google Authenticator poʻo FreeOTP.
  • Login Flows - fa'aigoaina e le tagata lava ia, toe faʻaleleia ma toe faʻaleleia, ma isi e mafai.
  • Pulega o Sauniga - e mafai e le au pulega ona fa'atautaia vasega a tagata fa'aoga mai le tasi itu.
  • Token Mappers - fusifusia o uiga faʻaoga, matafaioi ma isi uiga manaʻomia i faʻailoga.
  • Pulea faiga fa'avae fetu'una'i ile malo, fa'aoga ma tagata fa'aoga.
  • Lagolago CORS – O tagata fa'atau mea fa'atatau e iai le lagolago a le CORS.
  • Au'aunaga Tulaga Au'aunaga (SPI) - o se numera tele o SPI e fa'atagaina oe e fa'atulaga vaega eseese o le 'au'aunaga: fa'amaoniga fa'amaonia, tu'uina atu fa'amatalaga, fa'asologa o fa'asologa ma sili atu.
  • Feso'ota'iga tagata fa'atau mo talosaga JavaScript, WildFly, JBoss EAP, Fuse, Tomcat, Jetty, Spring.
  • Lagolago mo le galulue faatasi ma talosaga eseese e lagolagoina le OpenID Connect Relying Party library poo le SAML 2.0 Service Provider Library.
  • E mafai ona fa'alauteleina i le fa'aogaina o plugini.

Mo faʻagasologa CI / CD, faʻapea foʻi ma le faʻaogaina o faiga faʻafoe i Keycloak, e mafai ona faʻaogaina le REST API / JAVA API. E maua fa'amaumauga i luga ole laiga:

malolo 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

Atina'e Fa'asinomaga Tu'ufa'atasi (I le Fale)

Avanoa o le faʻamaoniaina o tagata e ala i auaunaga a le User Federation.

SSO i luga o le fausaga microservice. Matou te faʻaaogaina Keycloak. Vaega #1

E mafai fo'i ona fa'aoga le fa'amaoniga pasi - pe a fa'amaonia e tagata fa'aoga i fale faigaluega ma Kerberos (LDAP po'o AD), ona mafai lea ona fa'amaonia otometi i Keycloak e aunoa ma le toe fa'aofiina o latou igoa ma upu fa'aulu.

Mo le faʻamaonia ma le faʻatagaina atili o tagata faʻaoga, e mafai ona faʻaogaina se DBMS faʻafesoʻotaʻi, lea e sili ona talafeagai mo siosiomaga atinaʻe, talu ai e le aofia ai faʻatulagaga uumi ma tuʻufaʻatasia i le amataga o galuega faatino. Ona o le le mafai, Keycloak faʻaaogaina se DBMS faʻapipiʻiina e teu ai faʻamaumauga ma faʻamatalaga tagata faʻaoga.

O le lisi o DBMS lagolago e lautele ma e aofia ai: MS SQL, Oracle, PostgreSQL, MariaDB, Oracle ma isi. Ole pito sili ona su'esu'eina ile taimi nei ole Oracle 12C Release1 RAC ma Galera 3.12 fuifui mo MariaDB 10.1.19.

Fa'ailoa fa'asinomaga - so'otaga fa'aagafesootai

E mafai ona fa'aoga se saini mai feso'ota'iga lautele. Ina ia faʻagaoioia le mafai e faʻamaonia ai tagata faʻaoga, faʻaoga le Keycloack admin console. E le manaʻomia suiga i le numera o talosaga ma o loʻo avanoa lenei faʻatinoga mai le pusa ma e mafai ona faʻagaoioia i soʻo se laasaga o le poloketi.

SSO i luga o le fausaga microservice. Matou te faʻaaogaina Keycloak. Vaega #1

Ina ia faʻamaonia tagata faʻaoga, e mafai ona faʻaoga OpenID/SAML Identity providers.

Fa'ata'ita'iga masani fa'atagaina fa'aaoga OAuth2 i Keycloak

Fa'ataga Fa'ailoga Fa'agasologa - fa'aoga i fa'aoga i le itu-server. O se tasi o ituaiga masani o fa'atagaga fa'atagaga ona e fetaui lelei mo talosaga i le itu-aumau lea e le maua ai e isi le fa'ailoga puna'oa o le talosaga ma fa'amatalaga o tagata. O le faʻagasologa i lenei tulaga e faʻavae i luga o le toe faʻafeiloaʻi. O le talosaga e tatau ona mafai ona fesoʻotaʻi ma se sui faʻaoga (tagata faʻaoga-agent), e pei o se upega tafaʻilagi, e maua ai tulafono faʻatagaina API e tuʻuina atu e ala i le sui faʻaoga.

tafega fa'aali - fa'aaogaina e telefoni feavea'i po'o upegatafa'ilagi (talosaga o lo'o fa'agaoioia i luga o le masini a le tagata fa'aoga).

Ole ituaiga fa'atagaga fa'atotonu e fa'aogaina e telefoni feavea'i ma 'upega tafa'ilagi e le mafai ona fa'amaonia le agatapuia o tagata o tausia. O le fa'atagaga fa'apitoa e fa'aaoga ai fo'i le toe fa'atonuina o sui sui, lea e tu'uina atu ai le fa'ailoga avanoa i le sui fa'aoga mo le fa'aoga atili i le talosaga. Ole mea lea e maua ai le fa'ailoga ile tagata fa'aoga ma isi talosaga ile masini ole tagata fa'aoga. O lenei ituaiga o faʻatagaga faʻatagaina e le faʻamaonia ai le faʻamatalaga o le talosaga, ma o le faagasologa lava ia e faʻalagolago i se URL toe faʻafeiloaʻi (muamua na resitalaina i le auaunaga).

E le lagolagoina e le Implicit Flow fa'ailoga toe fa'afouina o fa'ailoga.

Fa'ameaalofa Fa'ameaalofa a le Tagata Faigaluega - e faʻaaogaina pe a faʻaoga le talosaga ile API. O lenei ituaiga o fa'atagaga e masani ona fa'aoga mo feso'ota'iga a le server-to-server e tatau ona fa'atino i tua e aunoa ma se feso'ota'iga fa'aoga vave. O le fa'ameaalofa fa'ameaalofa a le kalani e fa'ataga ai se 'au'aunaga i luga ole laiga (tagata fa'alilolilo) e fa'aoga ana lava fa'ailoga nai lo le fa'afoliga o se tagata fa'aoga e fa'amaonia pe a vala'au i se isi auaunaga i luga ole laiga. Mo se maualuga maualuga o le saogalemu, e mafai e le auʻaunaga valaʻau ona faʻaoga se tusi faamaonia (nai lo se mealilo faʻasoa) e fai ma faʻamaoniga.

O le faʻamatalaga OAuth2 o loʻo faʻamatalaina i totonu
RFC-6749
RFC-8252
RFC-6819

JWT faailoga ma ona lelei

JWT (JSON Web Token) o se tulaga tatala (https://tools.ietf.org/html/rfc7519), o loʻo faʻamatalaina ai se auala faʻapipiʻi ma faʻaogaina e le tagata lava ia e faʻafeiloaʻi ai faʻamatalaga i le va o itu i le tulaga o se mea JSON.

E tusa ai ma le faʻataʻitaʻiga, o le faʻailoga e aofia ai vaega e tolu i le faʻavae-64 faʻavae, vavaeeseina e togitogi. O le vaega muamua e taʻua o le ulutala, lea e aofia ai le ituaiga o faʻailoga ma le igoa o le hash algorithm mo le mauaina o se saini numera. O le vaega lona lua e teu ai faʻamatalaga autu (tagata faʻaoga, uiga, ma isi). O le vaega lona tolu o le saini numera.

. .
Aua ne'i teuina le fa'ailoga i lau fa'amaumauga. Ona o se faailoga aoga e tutusa ma se upu faataga, o le teuina o le faailoga e pei o le teuina o le upu faataga i tusitusiga manino.
Avanoa fa'ailoga o se fa'ailoga e tu'uina atu ai i lē e ona le avanoa e fa'amautu ai punaoa a le server. E masani ona puupuu lona olaga ma e mafai ona ave faʻamatalaga faʻaopoopo e pei o le tuatusi IP a le pati o loʻo talosagaina le faʻailoga.

Toe fa'afou fa'ailoga ose fa'ailoga e mafai ai e tagata fa'atau ona talosagaina ni fa'ailoga fou avanoa pe a mae'a o latou olaga. O nei faailoga e masani ona tuʻuina atu mo se taimi umi.

O faʻamanuiaga autu o le faʻaaogaina i le microservice architecture:

  • Malosiaga e maua ai talosaga ma auaunaga eseese e ala i le fa'amaoni tasi taimi.
  • I le leai o se numera o uiga manaʻomia i le faʻamatalaga faʻaoga, e mafai ona faʻatamaoaigaina i faʻamaumauga e mafai ona faʻaopoopo i le uta, e aofia ai le otometi ma luga o le lele.
  • E leai se mea e manaʻomia e teu ai faʻamatalaga e uiga i sauniga faʻamalosi, naʻo le talosaga a le server e manaʻomia le faʻamaonia o le saini.
  • E sili atu ona fetu'una'i le fa'atonuina o avanoa e ala i uiga fa'aopoopo i le uta.
  • O le faʻaaogaina o se saini faʻailoga mo le ulutala ma le uta e faʻateleina ai le saogalemu o le fofo i lona atoaga.

JWT faailoga - fatuga

Ulutala - ona o le faaletonu, o le ulutala o loʻo i ai naʻo le ituaiga o faʻailoga ma le algorithm faʻaaogaina mo faʻamatalaga.

O le ituaiga faʻailoga o loʻo teuina i le "type" ki. O le "type" ki e le amanaiaina i le JWT. Afai o loʻo i ai le ki "type", o lona tau e tatau ona JWT e faʻaalia ai o lenei mea o le JSON Web Token.

O le ki lona lua "alg" o loʻo faʻamatalaina le algorithm na faʻaaogaina e faʻailoga ai le faʻailoga. E tatau ona seti i le HS256 ona o le faaletonu. O le ulutala o loʻo faʻailoga i le base64.

{ "alg": "HS256", "type": "JWT"}
uta (anotusi) - o le uta e teuina soʻo se faʻamatalaga e manaʻomia ona faʻamaonia. O ki ta'itasi i le uta e ta'ua o se "fa'amatalaga". Mo se faʻataʻitaʻiga, e mafai ona e ulufale i le talosaga naʻo le valaʻaulia (tapuni faʻalauiloa). Pe a matou mananaʻo e valaaulia se tasi e auai, matou te lafo atu iā i latou se tusi valaaulia. E taua le siakiina o le tuatusi imeli e patino i le tagata na te taliaina le valaaulia, o lea o le a matou aofia ai lenei tuatusi i le uta, mo lenei mea matou te teuina i le "imeli" ki.

{ "imeli": "[imeli puipuia]"}

O ki i uta e mafai ona fai fua. Ae ui i lea, o loʻo i ai ni nai faʻaagaga:

  • iss (Tuuina atu) - Faʻailoa le talosaga o loʻo lafo mai ai le faʻailoga.
  • sub (Mataupu) - faʻamatalaina le mataupu o le faʻailoga.
  • aud (Audience) o se faʻasologa o manoa faʻapitoa poʻo URI o se lisi o tagata e mauaina lenei faʻailoga. A maua e le itu e mauaina se JWT ma le ki ua tuʻuina atu, e tatau ona siaki mo le i ai o ia lava i totonu o tagata e mauaina - a le amanaʻiaina le faʻailoga.
  • exp (Taimi Fa'amuta) - Fa'ailoa le taimi e muta ai le fa'ailoga. O le tulaga JWT e manaʻomia uma ana faʻatinoga e teena ai faʻailoga ua maeʻa. O le ki exp e tatau ona avea ma faailoga taimi i le faatulagaga unix.
  • nbf (Leai Muamua) o se taimi i le unix format e fuafua ai le taimi e faʻamaonia ai le faʻailoga.
  • iat (Tuuina atu i) - O lenei ki o loʻo faʻatusalia le taimi na tuʻuina atu ai le faʻailoga ma e mafai ona faʻaaoga e fuafua ai le matua o le JWT. O le ki iat e tatau ona avea ma se faailoga taimi i le faatulagaga unix.
  • Jti (JWT ID) - o se manoa e faʻamalamalamaina le faʻailoga tulaga ese o lenei faʻailoga, mataʻutia-mataʻutia.

E taua le malamalama o le totogi e le o lafoina i se faʻailoga faʻailoga (e ui lava e mafai ona faʻapipiʻi faʻailoga ma mafai ai loa ona tuʻuina atu faʻamatalaga faʻailoga). O le mea lea, e le mafai ona e teuina soʻo se faʻamatalaga faalilolilo i totonu. E pei o le ulutala, o le uta o le base64 faʻailoga.
Saini - o le taimi lava e maua ai le ulutala ma le uta, e mafai ona tatou faʻatusatusa le saini.

O le ulutala ma le uta o loʻo faʻapipiʻiina i le base64 e ave ma tuʻufaʻatasia i se laina e vavaeeseina e se togi. O lenei manoa ma le ki faalilolilo e tuʻuina atu i le faʻailoga algorithm o loʻo faʻamaonia i le ulutala (key "alg"). O le ki e mafai ona so'o se manoa. O manoa uumi e sili ona lelei aua e manaʻomia ai le tele o le taimi e filifili ai.

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

Fausiaina o le Fa'ailoga Failover Cluster Architecture

Pe a faʻaaogaina se fuifui se tasi mo galuega uma, o loʻo i ai le faʻaopoopoga o manaʻoga mo se SSO solution. Pe a laʻititi le aofaʻi o galuega faatino, o nei manaʻoga e le o vaʻaia tele mo galuega uma, peitaʻi, faʻatasi ai ma le faʻateleina o le numera o tagata faʻaoga ma tuʻufaʻatasiga, o manaʻoga mo le avanoa ma le faʻatupulaia o galuega.

O le faʻateleina o le lamatiaga o le toilalo SSO e tasi e faʻateleina ai manaʻoga mo le faʻataʻitaʻiga o fofo ma metotia faʻaaogaina mo vaega e le faʻaaogaina ma taʻitaʻia ai i se SLA sili ona fufusi. I lenei itu, e masani lava i le taimi o le atinaʻe poʻo le amataga o le faʻatinoina o fofo, o poloketi e iai a latou lava atinaʻe e le faʻaleagaina. A o faagasolo le atinaʻe, e manaʻomia le tuʻuina atu o avanoa mo atinaʻe ma faʻalautele. E sili ona fetuutuunai le fausiaina o se fuifui failover e faʻaaoga ai le faʻaogaina o pusa poʻo se auala faʻapipiʻi.

Ina ia galue i le Active/Active ma Active/Passive cluster modes, e manaʻomia le faʻamautinoaina o faʻamaumauga o loʻo i totonu o se faʻamaumauga fesoʻotaʻiga - e tatau ona faʻapipiʻi faʻatasi uma nodes database i le va o nofoaga autu o faʻamatalaga faʻafanua eseese.

O le faʻataʻitaʻiga sili ona faigofie o se faʻapipiʻi faʻaletonu.

SSO i luga o le fausaga microservice. Matou te faʻaaogaina Keycloak. Vaega #1

O a faʻamanuiaga o le faʻaaogaina o se fuifui e tasi:

  • Avanoa maualuga ma faʻatinoga.
  • Lagolago mo faiga faʻaogaina: Active / Active, Active / Passive.
  • Malosiaga e fa'atupuina fa'atatau - pe a fa'aogaina le koneteina virtualization.
  • Avanoa o pulega fa'atotonugalemu ma mata'ituina.
  • Auala tu'ufa'atasi mo le fa'ailoaina/fa'amaoni/fa'atagaina o tagata fa'aoga i galuega.
  • Fegalegaleaiga sili atu manino i le va o poloketi eseese e aunoa ma le faʻaogaina o tagata faʻaoga.
  • Le mafai ona toe faʻaaogaina le faailoga JWT i galuega eseese.
  • Fa'alagolago tasi.
  • Fa'atosina vave o poloketi e fa'aaoga ai microservices/container virtualization (leai se mana'oga e si'i ma fa'aopoopo vaega fa'aopoopo).
  • E mafai ona fa'atau le lagolago fa'apisinisi mai le fa'atau.

O le a le mea e Su'e A'o Fuafuaina se Fa'apotopotoga

DBMS

Keycloak faʻaaogaina se faiga faʻapipiʻi faʻamaumauga e teu ai: malo, tagata faʻatau, tagata faʻaoga, ma isi.
Ole tele ole DBMS e lagolagoina: MS SQL, Oracle, MySQL, PostgreSQL. Keycloak e sau ma lana lava fa'amaumauga tu'ufa'atasiga. E fautuaina e faʻaoga mo siosiomaga e le o utaina - e pei o siosiomaga atinaʻe.

Ina ia galue i le Active / Active ma Active / Passive cluster modes, e manaʻomia le faʻamautinoaina o faʻamaumauga o loʻo i totonu o fesoʻotaʻiga faʻamaumauga ma faʻapipiʻi uma nodes o le faʻamaumauga tuʻufaʻatasiga i le va o nofoaga autu o faʻamatalaga.

Fa'asoa fa'aoga (Infinspan)

Mo le fuifui e galue saʻo, e manaʻomia le faʻaopoopoina o tuʻutuʻuga o loʻo i lalo e faʻaaoga ai le JBoss Data Grid:

Tulaga fa'amaoni - fa'aoga e teu ai fa'amaumauga pe a fa'amaonia se tagata fa'aoga patino. Talosaga mai lenei cache e masani lava ona aofia ai le suʻesuʻe ma le Keycloak server, ae le o le talosaga.

O fa'ailoga fa'atino e fa'aoga mo fa'aaliga e mana'omia e le tagata fa'aoga e fa'amaonia se gaioiga fa'atasi (e ala ile imeli). Mo se faʻataʻitaʻiga, i le taimi e galo ai upu faʻamalo, o le actionTokens Infinispan cache e faʻaaogaina e siaki ai metadata e uiga i faʻailoga gaioiga e fesoʻotaʻi ua uma ona faʻaaogaina, o lea e le mafai ai ona toe faʻaaogaina.

Fa'asaoina ma le fa'aleaogaina o fa'amaumauga faifai pea - fa'aoga e teu ai fa'amaumauga tumau e aloese ai mai fesili le mana'omia ile fa'amaumauga. A fa'afou e so'o se 'au'aunaga Keycloak fa'amaumauga, e mana'omia ona iloa uma e isi 'au'aunaga Keycloak i nofoaga fa'amaumauga uma.

Galuega - Na'o le fa'aaogaina e lafo ai fe'au le aoga i le va o node fuifui ma nofoaga autu o fa'amaumauga.

Tagata fa'aoga vasega - fa'aoga e teu ai fa'amatalaga e uiga i fa'aoga fa'aoga e aoga mo le umi ole taimi ole su'esu'ega a le tagata fa'aoga. O le cache e tatau ona faʻagasolo talosaga HTTP mai le tagata faʻaaoga ma le talosaga.

Puipuiga fa'amalosi - fa'aaoga e siaki ai fa'amatalaga e uiga i fa'ailoga ua le manuia.

Paleni uta

O le paleni o uta o le nofoaga e tasi e ulufale ai i le kaloka ma e tatau ona lagolagoina sauniga pipii.

Fa'atonuga Talosaga

E fa'aaogaina e pulea ai le fegalegaleai o vaega o le tasi ma le isi ma e mafai ona fa'ata'ita'iina pe fa'apipi'iina e fa'aoga ai mea faigaluega fa'aautomatika ma fa'ateleina le fa'aogaina o meafaigaluega fa'aautomatika. O faʻataʻitaʻiga masani faʻapipiʻi i OpenShift, Kubernates, Rancher.

O le mea lea e faʻamaeʻa ai le vaega muamua - o le mea faʻapitoa. I le fa'asologa o tala o lo'o mulimuli mai, o fa'ata'ita'iga o tu'ufa'atasiga fa'atasi ma tu'ufa'atasiga fa'asinomaga eseese ma fa'ata'ita'iga o fa'atulagaga o le a talanoaina.

puna: www.habr.com

Faaopoopo i ai se faamatalaga