SSO ar ailtireacht microservice. Bainimid úsáid as Keycloak. Cuid Uimh. 1

In aon chuideachta mhór, agus ní haon eisceacht é X5 Retail Group, de réir mar a théann forbairt ar aghaidh, méadaíonn líon na dtionscadal a dteastaíonn údarú úsáideora uathu. Le himeacht ama, tá gá le haistriú gan uaim d’úsáideoirí ó fheidhmchlár amháin go feidhmchlár eile agus ansin tá gá le freastalaí singil a chanadh ar aghaidh (SSO). Ach cad atá le déanamh nuair a úsáidtear soláthraithe aitheantais amhail AD nó soláthraithe eile nach bhfuil tréithe breise acu cheana féin i dtionscadail éagsúla. Déanfar aicme córas ar a dtugtar “bróicéirí aitheantais” a tharrtháil. Is iad na cinn is feidhmiúla ná a ionadaithe, mar shampla Keycloak, bainistíocht Rochtana Gravitee, etc. An chuid is mó go minic, is féidir cásanna úsáide a bheith difriúil: idirghníomhaíocht meaisín, rannpháirtíocht úsáideoirí, srl. agus a leithéid de réiteach Tá bróicéir tásca ag ár gcuideachta anois – Keycloak.

SSO ar ailtireacht microservice. Bainimid úsáid as Keycloak. Cuid Uimh. 1

Is táirge aitheantais foinse oscailte agus rialaithe rochtana é Keycloak arna chothabháil ag RedHat. Tá sé mar bhunús le táirgí na cuideachta ag baint úsáide as SSO - RH-SSO.

Bunchoincheapa

Sula dtosaíonn tú ag déileáil le réitigh agus cuir chuige, ba cheart duit cinneadh a dhéanamh i dtéarmaí agus seicheamh próisis:

SSO ar ailtireacht microservice. Bainimid úsáid as Keycloak. Cuid Uimh. 1

Sainaithint is nós imeachta é chun ábhar a aithint trína aitheantóir (i bhfocail eile, is é seo an sainmhíniú ar ainm, logáil isteach nó uimhir).

Fíordheimhniú – is nós imeachta fíordheimhnithe é seo (déantar an t-úsáideoir a fhíorú le pasfhocal, fíoraítear an litir le síniú leictreonach, etc.)

Údarú - is é seo an soláthar rochtana ar acmhainn (mar shampla, le ríomhphost).

Bróicéir Aitheantais Keycloak

Eochrach is réiteach bainistíochta aitheantais agus rochtana foinse oscailte é atá deartha le húsáid in IS inar féidir patrúin ailtireachta micreasheirbhíse a úsáid.

Tairgeann Keycloak gnéithe cosúil le Síniú Aonair (SSO), Aitheantais Bhróicéireachta agus Logáil Isteach Sóisialta, Cónaidhm Úsáideoirí, Cuibheoirí Cliant, Consól Riaracháin, agus Consól Bainistíochta Cuntas.

Feidhmiúlacht bhunúsach tacaithe ag Keycloak:

  • Sínigh isteach Aonair agus Sínigh Amach Aonair d'fheidhmchláir bhrabhsálaí.
  • Tacaíocht do OpenID/OAuth 2.0/SAML.
  • Bróicéireacht Aitheantais - fíordheimhniú ag baint úsáide as soláthraithe aitheantais seachtracha OpenID Connect nó SAML.
  • Logáil isteach Sóisialta - Tacaíocht Google, GitHub, Facebook, Twitter le haghaidh aitheantais úsáideora.
  • Cónaidhm Úsáideoirí - sioncrónú úsáideoirí ó fhreastalaithe LDAP agus Eolaire Gníomhach agus soláthraithe aitheantais eile.
  • Droichead Kerberos - ag baint úsáide as freastalaí Kerberos le haghaidh fíordheimhnithe úsáideora uathoibríoch.
  • Consól Riaracháin - chun socruithe agus roghanna réitigh a bhainistiú ar bhealach aontaithe tríd an nGréasán.
  • Console Bainistíochta Cuntas - le haghaidh féinbhainistíocht ar phróifíl úsáideora.
  • Saincheapadh an réiteach bunaithe ar chéannacht chorparáideach na cuideachta.
  • Fíordheimhniú 2FA - Tacaíocht TOTP/HOTP ag baint úsáide as Google Authenticator nó FreeOTP.
  • Sreafaí Logáil isteach - is féidir féinchlárú úsáideora, aisghabháil pasfhocal agus athshocrú, agus daoine eile.
  • Bainistíocht Seisiún - is féidir le riarthóirí seisiúin úsáideora a bhainistiú ó phointe amháin.
  • Mappers Chomhartha - tréithe ceangailteacha úsáideora, róil agus tréithe eile riachtanacha le comharthaí.
  • Bainistíocht beartais sholúbtha ar fud an fhearainn, an fheidhmchláir agus na n-úsáideoirí.
  • Tacaíocht CORS - Tá tacaíocht CORS ionsuite ag cuibheoirí cliaint.
  • Comhéadain Soláthraí Seirbhíse (SPI) - Líon mór SPIanna a ligeann duit gnéithe éagsúla den fhreastalaí a shaincheapadh: sreafaí fíordheimhnithe, soláthraithe aitheantais, mapáil prótacail, agus níos mó.
  • Adapters cliant le haghaidh feidhmchláir JavaScript, WildFly, JBoss EAP, Fuse, Tomcat, Jetty, Spring.
  • Tacaíocht chun oibriú le feidhmchláir éagsúla a thacaíonn le leabharlann OpenID Connect Relying Party nó Leabharlann Soláthraí Seirbhíse SAML 2.0.
  • Inleathnaithe ag baint úsáide as forlíontáin.

Maidir le próisis CI/CD, chomh maith le próisis bhainistíochta in Keycloak a uathoibriú, is féidir an REST API/JAVA API a úsáid. Tá an doiciméadú ar fáil i bhfoirm leictreonach:

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

Soláthraithe Aitheantais Fiontraíochta (Ar an Áitreabh)

Cumas úsáideoirí a fhíordheimhniú trí sheirbhísí Cónaidhm Úsáideoirí.

SSO ar ailtireacht microservice. Bainimid úsáid as Keycloak. Cuid Uimh. 1

Is féidir fíordheimhniú pas-trí a úsáid freisin - má fhíoraíonn úsáideoirí i gcoinne stáisiúin oibre le Kerberos (LDAP nó AD), is féidir iad a fhíordheimhniú go huathoibríoch chuig Keycloak gan a n-ainm úsáideora agus pasfhocal a chur isteach arís.

Chun úsáideoirí a fhíordheimhniú agus a údarú tuilleadh, is féidir DBMS gaolmhar a úsáid, is infheidhme maidir le timpeallachtaí forbartha, ós rud é nach bhfuil socruithe agus comhtháthú fada i gceist leis ag céimeanna tosaigh na dtionscadal. De réir réamhshocraithe, úsáideann Keycloak DBMS ionsuite chun socruithe agus sonraí úsáideora a stóráil.

Tá liosta na DBMS tacaithe fairsing agus áirítear leis: MS SQL, Oracle, PostgreSQL, MariaDB, Oracle agus daoine eile. Is iad na cinn is mó a ndearnadh tástáil orthu go dtí seo ná Oracle 12C Release1 RAC agus Galera 3.12 braisle do MariaDB 10.1.19.

Soláthraithe aitheantais - logáil isteach sóisialta

Is féidir logáil isteach a úsáid ó líonraí sóisialta. Chun an cumas úsáideoirí a fhíordheimhniú a ghníomhachtú, bain úsáid as consól admin Keycloack. Níl gá le hathruithe ar chód an fheidhmchláir agus tá an fheidhmiúlacht seo ar fáil as an mbosca agus is féidir é a ghníomhachtú ag aon chéim den tionscadal.

SSO ar ailtireacht microservice. Bainimid úsáid as Keycloak. Cuid Uimh. 1

Is féidir soláthraithe Aitheantais OpenID/SAML a úsáid le haghaidh fíordheimhnithe úsáideora.

Gnáthchásanna údaraithe ag baint úsáide as OAuth2 in Keycloak

Sreabhadh Cód Údaraithe - a úsáidtear le feidhmchláir ar thaobh an fhreastalaí. Ceann de na cineálacha cead údaraithe is coitianta toisc go bhfuil sé oiriúnach go maith d’fheidhmchláir fhreastalaí nuair nach bhfuil cód foinse an fheidhmchláir agus sonraí cliant ar fáil do dhaoine ón taobh amuigh. Tá an próiseas sa chás seo bunaithe ar atreorú. Caithfidh an t-iarratas a bheith in ann cumarsáid a dhéanamh le gníomhaire úsáideora (úsáideoir-gníomhaire), cosúil le brabhsálaí gréasáin - chun cóid údaraithe API a atreorú tríd an ngníomhaire úsáideora a fháil.

sreabhadh intuigthe - in úsáid ag feidhmchláir mhóibíleacha nó gréasáin (feidhmchláir a ritheann ar ghléas an úsáideora).

Úsáideann feidhmchláir mhóibíleacha agus gréasáin an cineál ceadaithe údaraithe intuigthe nuair nach féidir rúndacht an chliaint a chinntiú. Úsáideann an cineál ceada intuigthe freisin atreorú gníomhaire úsáideora, trína gcuirtear an comhartha rochtana ar aghaidh chuig an ngníomhaire úsáideora le haghaidh tuilleadh úsáide san fheidhmchlár. Cuireann sé seo an comhartha ar fáil don úsáideoir agus feidhmchláir eile ar ghléas an úsáideora. Ní fhíordheimhníonn an cineál seo de chead údaraithe céannacht an fheidhmchláir, agus braitheann an próiseas féin ar URL atreoraithe (a cláraíodh leis an tseirbhís roimhe seo).

Ní thacaíonn Sreabhadh intuigthe le comharthaí athnuachana comharthaí rochtana.

Sreabhadh Deontas Dintiúir Cliant — a úsáidtear nuair a fhaigheann an feidhmchlár rochtain ar an API. Úsáidtear an cineál seo ceada údaraithe go hiondúil le haghaidh idirghníomhaíochtaí freastalaí-go-freastalaí nach mór a dhéanamh sa chúlra gan idirghníomhú láithreach úsáideora. Ligeann sreabhadh deontais dintiúir an chliaint do sheirbhís gréasáin (cliant rúnda) a dintiúir féin a úsáid in ionad aithris a dhéanamh ar úsáideoir chun fíordheimhniú a dhéanamh agus é ag glaoch ar sheirbhís gréasáin eile. Ar mhaithe le leibhéal níos airde slándála, is féidir leis an tseirbhís glaonna deimhniú (seachas rún comhroinnte) a úsáid mar dhintiúir.

Déantar cur síos ar shonraíocht OAuth2 i
RFC- 6749
RFC- 8252
RFC- 6819

Comhartha JWT agus na buntáistí a bhaineann leis

Is caighdeán oscailte é JWT (JSON Web Token) (https://tools.ietf.org/html/rfc7519) a shainíonn bealach dlúth agus féinchuimsitheach chun faisnéis a aistriú go slán idir páirtithe mar réad JSON.

De réir an chaighdeáin, tá an comhartha comhdhéanta de thrí chuid i bhformáid bonn-64, scartha le poncanna. Tugtar an ceanntásc ar an gcéad chuid, ina bhfuil an cineál chomhartha agus ainm an algartam hash chun síniú digiteach a fháil. Stórálann an dara cuid an fhaisnéis bhunúsach (úsáideoir, tréithe, etc.). Is é an tríú cuid an síniú digiteach.

. .
Ná stóráil comhartha i do DB riamh. Toisc go bhfuil comhartha bailí comhionann le pasfhocal, tá stóráil an chomhartha cosúil le focal faire a stóráil i dtéacs soiléir.
Comhartha rochtana is comhartha é a thugann rochtain dá úinéir ar acmhainní freastalaí slán. Is gnách go mbíonn saolré gearr aige agus féadfaidh sé faisnéis bhreise a iompar, mar shampla seoladh IP an pháirtí a iarrann an chomhartha.

Comhartha athnuachana is comhartha é a ligeann do chliaint comharthaí rochtana nua a iarraidh tar éis dóibh dul in éag. De ghnáth eisítear na comharthaí seo ar feadh tréimhse fada ama.

Na príomhbhuntáistí a bhaineann le húsáid in ailtireacht microservice:

  • Cumas rochtain a fháil ar fheidhmchláir agus ar sheirbhísí éagsúla trí fhíordheimhniú aonuaire.
  • In éagmais roinnt tréithe riachtanacha sa phróifíl úsáideora, is féidir saibhriú le sonraí is féidir a chur leis an bpálasta, lena n-áirítear uathoibrithe agus ar an eitilt.
  • Ní gá faisnéis a stóráil faoi sheisiúin ghníomhacha, ní gá don fheidhmchlár freastalaí ach an síniú a fhíorú.
  • Rialú rochtana níos solúbtha trí tréithe breise sa phálasta.
  • Méadaítear slándáil an réitigh ina iomláine má úsáidtear síniú dearbhán don cheanntásc agus don phálasta.

Comhdhéanamh JWT - comhdhéanamh

Teideal - de réir réamhshocraithe, níl sa cheanntásc ach an cineál comharthaí agus an algartam a úsáidtear le haghaidh criptithe.

Stóráiltear cineál an chomhartha san eochair "clóscríobh". Déantar neamhaird den eochair 'cineál' sa JWT. Má tá an eochair "cló" i láthair, ní mór a luach a bheith JWT chun a chur in iúl gur Comhartha Gréasáin JSON é an réad seo.

Sainmhíníonn an dara eochair "alg" an algartam a úsáidtear chun an comhartha a chriptiú. Ba cheart é a shocrú go HS256 de réir réamhshocraithe. Tá an ceanntásc ionchódaithe i base64.

{ "alg": "HS256", "cineál": "JWT"}
Ualach pá (ábhar) - stórálann an pálasta aon fhaisnéis is gá a sheiceáil. Tugtar "éileamh" ar gach eochair sa phálasta. Mar shampla, ní féidir leat an t-iarratas a chur isteach ach trí chuireadh (promo dúnta). Nuair is mian linn cuireadh a thabhairt do dhuine éigin a bheith rannpháirteach, cuirimid litir chuiridh chucu. Tá sé tábhachtach a sheiceáil go mbaineann an seoladh ríomhphoist leis an duine a ghlacann leis an gcuireadh, mar sin cuirfimid an seoladh seo san áireamh sa phálasta, chun é seo a stóráil againn san eochair "ríomhphost"

{ "ríomhphost": "[ríomhphost faoi chosaint]"}

Féadfaidh eochracha sa phálasta a bheith treallach. Mar sin féin, tá roinnt in áirithe:

  • iss (Eisitheoir) - Sainaithníonn sé an t-iarratas óna bhfuil an comhartha á sheoladh.
  • fo (Ábhar) - sainmhíníonn sé ábhar an chomhartha.
  • Is éard atá in aud (Audience) sraith teaghráin nó URIanna cás-íogair ar liosta é sin d'fhaighteoirí an chomhartha seo. Nuair a fhaigheann an taobh glactha JWT leis an eochair tugtha, ní mór dó a sheiceáil an bhfuil sé féin sna faighteoirí - nó déan neamhaird den chomhartha.
  • exp (Am Éaga) - Léiríonn sé nuair a théann an comhartha in éag. Éilíonn an caighdeán JWT go ndiúltóidh a chuid feidhmeanna go léir comharthaí atá imithe in éag. Caithfidh an eochair exp a bheith ina stampa ama i bhformáid unix.
  • Is é nbf (Ní Roimh) am i bhformáid unix a chinneann an tráth a thiocfaidh an comhartha bailí.
  • iat (Eisithe Ag) - Léiríonn an eochair seo an t-am ar eisíodh an comhartha agus is féidir í a úsáid chun aois an JWT a chinneadh. Caithfidh an eochair iat a bheith ina stampa ama i bhformáid unix.
  • Jti (ID JWT) — teaghrán a shainíonn aitheantóir uathúil an chomhartha seo, cás-íogair.

Tá sé tábhachtach a thuiscint nach bhfuil an pálasta tarchurtha criptithe (cé gur féidir comharthaí a neadú agus ansin is féidir sonraí criptithe a tharchur). Mar sin, ní féidir leat aon fhaisnéis rúnda a stóráil ann. Cosúil leis an gceanntásc, tá an pálasta ionchódaithe base64.
Síniú - nuair a bhíonn teideal agus pálasta againn, is féidir linn an síniú a ríomh.

Tógtar an ceanntásc agus an pálasta atá ionchódaithe i mbonn64 agus cuirtear le chéile iad i líne atá scartha le ponc. Ansin cuirtear an teaghrán seo agus an eochair rúnda isteach san algartam criptithe atá sonraithe sa cheanntásc (eochair “alg”). Is féidir leis an eochair a bheith ar aon teaghrán. Beidh teaghráin níos faide níos fearr mar beidh níos mó ama ag teastáil uathu le roghnú.

{"alg":"RSA1_5",, "pálasta":"A128CBC-HS256"}

Ailtireacht Braisle Theip Eochrach a Thógáil

Agus braisle amháin á n-úsáid do gach tionscadal, tá riachtanais mhéadaithe do réiteach SSO. Nuair a bhíonn líon na dtionscadal beag, níl na ceanglais seo chomh suntasach do gach tionscadal, áfach, le méadú ar líon na n-úsáideoirí agus na comhtháthú, na ceanglais maidir le hinfhaighteacht agus méadú feidhmíochta.

Méadaítear na ceanglais maidir le hailtireacht an réitigh agus na modhanna a úsáidtear le haghaidh comhpháirteanna iomarcacha de bharr an riosca a bhaineann le cliseadh SSO aonair agus cruthaítear SLA an-dian. I dtaca leis sin, níos minice le linn na forbartha nó na luathchéimeanna de réitigh a chur chun feidhme, tá a mbonneagar neamh-fhulangach féin ag tionscadail. De réir mar a théann an fhorbairt ar aghaidh, ní mór deiseanna forbartha agus scálaithe a leagan síos. Tá sé an-solúbtha braisle failover a thógáil ag baint úsáide as fíorúlú coimeádán nó cur chuige hibrideach.

Chun oibriú ar mhodhanna braisle Gníomhacha/Gníomhacha agus Gníomhacha/Éighníomhacha, is gá comhsheasmhacht sonraí a chinntiú sa bhunachar sonraí coibhneasta - ní mór an dá nód bunachar sonraí a mhacasamhlú go sioncronach idir ionaid sonraí geo-dháilte éagsúla.

An sampla is simplí de shuiteáil locht-fhulangach.

SSO ar ailtireacht microservice. Bainimid úsáid as Keycloak. Cuid Uimh. 1

Cad iad na buntáistí a bhaineann le braisle amháin a úsáid:

  • Ard-infhaighteacht agus feidhmíocht.
  • Tacaíocht do mhodhanna oibriúcháin: Gníomhach / Gníomhach, Gníomhach / Éighníomhach.
  • Cumas scála dinimiciúil - nuair a úsáidtear fíorúlú coimeádán.
  • Féidearthacht bainistíochta agus monatóireachta láraithe.
  • Cur chuige aontaithe maidir le húsáideoirí i dtionscadail a shainaithint/fhíordheimhniú/údarú.
  • Idirghníomhú níos trédhearcaí idir tionscadail éagsúla gan rannpháirtíocht úsáideoirí.
  • An cumas an comhartha JWT a athúsáid i dtionscadail éagsúla.
  • Pointe muiníne amháin.
  • Seoladh tionscadail níos tapúla ag baint úsáide as micreasheirbhísí / fíorúlú coimeádáin (ní gá comhpháirteanna breise a shuiteáil agus a chumrú).
  • Is féidir tacaíocht tráchtála a cheannach ón díoltóir.

Cad ba cheart a lorg agus cnuasach á phleanáil

DBMS

Úsáideann Keycloak córas bainistíochta bunachar sonraí chun: ríochtaí, cliaint, úsáideoirí, etc.
Tacaítear le raon leathan DBMS: MS SQL, Oracle, MySQL, PostgreSQL. Tagann Keycloak lena bhunachar sonraí gaolmhar ionsuite féin. Moltar é a úsáid le haghaidh timpeallachtaí neamh-ualach - cosúil le timpeallachtaí forbartha.

Chun oibriú i modhanna braisle Gníomhacha/Gníomhacha agus Gníomhacha/Éighníomhacha, tá gá le comhsheasmhacht sonraí i mbunachar sonraí coibhneasta, agus déantar an dá nód braisle bunachar sonraí a mhacasamhlú go sioncrónach idir lárionaid sonraí.

Taisce dáilte (Infinspan)

Le go n-oibreoidh an bhraisle i gceart, tá gá le sioncrónú breise ar na cineálacha taisce seo a leanas ag baint úsáide as Greille Sonraí JBoss:

Seisiúin fíordheimhnithe - úsáidtear iad chun sonraí a shábháil nuair a bhíonn úsáideoir ar leith á fhíordheimhniú. De ghnáth ní áirítear le hiarratais ón taisce seo ach an brabhsálaí agus an freastalaí Keycloak, ní an feidhmchlár.

Úsáidtear comharthaí gnímh le haghaidh cásanna ina gcaithfidh an t-úsáideoir gníomh a dhearbhú go neamhshioncronach (trí ríomhphost). Mar shampla, le linn sreabhadh pasfhocal dearmadta, úsáidtear an taisce actionTokens Infinispan chun meiteashonraí a choinneáil faoi chomharthaí gníomhaíochta gaolmhara a úsáideadh cheana féin, mar sin ní féidir é a athúsáid.

Taiscí agus neamhbhailíochtú sonraí marthanacha - úsáidtear iad chun sonraí marthanacha a thaisceadh chun fiosrúcháin nach bhfuil gá leo ar an mbunachar sonraí a sheachaint. Nuair a dhéanann aon fhreastalaí Keycloak na sonraí a nuashonrú, ní mór go mbeadh a fhios ag gach freastalaí Keycloak eile i ngach ionad sonraí faoi.

Obair - Ní úsáidtear é ach chun teachtaireachtaí neamhbhailí a sheoladh idir nóid bhraisle agus ionaid sonraí.

Seisiúin úsáideora - a úsáidtear chun sonraí a stóráil faoi sheisiúin úsáideora atá bailí ar feadh an tseisiúin bhrabhsálaí an úsáideora. Caithfidh an taisce iarratais HTTP a phróiseáil ón úsáideoir deiridh agus ón bhfeidhmchlár.

Cosaint fórsa brute - úsáidtear é chun sonraí faoi logáil isteach teipthe a rianú.

Cothromú luchtaithe

Is é an cothromóir ualaigh an pointe iontrála aonair don eochairchlóca agus caithfidh sé tacú le seisiúin ghreamaitheacha.

Freastalaithe Feidhmchlár

Úsáidtear iad chun idirghníomhú na gcomhpháirteanna lena chéile a rialú agus is féidir iad a fhíorú nó a choimeád ag baint úsáide as uirlisí uathoibrithe atá ann cheana agus scálú dinimiciúil uirlisí uathoibrithe bonneagair. Na cásanna imlonnaithe is coitianta in OpenShift, Kubernates, Rancher.

Críochnaíonn sé seo an chéad chuid - an ceann teoiriciúil. Sa chéad sraith alt eile, déanfar anailís ar shamplaí de chomhtháthú le soláthraithe aitheantais éagsúla agus ar shamplaí de shuíomhanna.

Foinse: will.com

Add a comment