SSO mo te hoahoanga microservice. Ka whakamahia e matou te Keycloak. Wāhanga #1

I roto i tetahi kamupene nui, me te X5 Retail Group he mea rereke, i te wa e whanake ana, ka piki ake te maha o nga kaupapa e hiahia ana kia whakamanahia e te kaiwhakamahi. I te roanga o te wa, ka hiahiatia te whakawhiti ngawari o nga kaiwhakamahi mai i tetahi tono ki tetahi atu, katahi ka hiahia ki te whakamahi i tetahi tūmau Single-Sing-On (SSO) kotahi. Engari me pehea te wa e whakamahia ana nga kaiwhakarato tuakiri penei i a AD me etahi atu kaore he huanga taapiri i roto i nga kaupapa rereke. Ka tae mai he roopu o nga punaha e kiia nei ko "kaiwhakahaere tohu" ki te whakaora. Ko nga mea tino mahi ko ona kanohi, penei i te Keycloak, Gravitee Access management, me etahi atu. Ko te nuinga o nga wa, ka rereke nga keehi: te taunekeneke miihini, te whakauru o nga kaiwhakamahi, me etahi atu. me enei otinga he kaihokohoko tohu to taatau kamupene - Keycloak.

SSO mo te hoahoanga microservice. Ka whakamahia e matou te Keycloak. Wāhanga #1

Ko te Keycloak he tuakiri puna tuwhera me te hua mana uru e tiakina ana e RedHat. Ko te turanga mo nga hua a te kamupene e whakamahi ana i te SSO - RH-SSO.

Ngā ariā taketake

I mua i to tiimata ki te whakatau i nga otinga me nga huarahi, me whakatau koe i runga i nga tikanga me te raupapa o nga tukanga:

SSO mo te hoahoanga microservice. Ka whakamahia e matou te Keycloak. Wāhanga #1

Tautuhinga he tikanga mo te mohio ki tetahi kaupapa ma tana tautohu (ara, koinei te whakamaramatanga o te ingoa, te takiuru, te nama ranei).

Whakaaturanga - he tikanga whakamotuhēhēnga tēnei (ka tirohia te kaiwhakamahi me te kupuhipa, ka tirohia te reta me te waitohu hiko, me etahi atu)

Whakaaetanga - koinei te whakarato urunga ki tetahi rauemi (hei tauira, ki te ī-mēra).

Tautuhinga Kaihokohoko Keycloak

kākahu kī Ko te tuakiri puna tuwhera me te otinga whakahaere uru i hangaia mo te whakamahi i roto i te IS ka taea te whakamahi tauira hoahoanga microservice.

Kei te tuku a Keycloak i nga ahuatanga penei i te hainatanga kotahi (SSO), te tuakiri tauhokohoko me te takiuru hapori, te whakakotahitanga kaiwhakamahi, nga kaiwhakauru kiritaki, te papatohu kaiwhakahaere me te papatohu whakahaere kaute.

Taumahinga taketake e tautokohia ana e Keycloak:

  • Waitohu-kotahi me te Waitohu-kotahi mo nga tono tirotiro.
  • Tautoko mo OpenID/OAuth 2.0/SAML.
  • Kaihokohoko Tuakiri - motuhēhēnga mā te whakamahi i te OpenID Connect o waho, i nga kaiwhakarato tuakiri SAML ranei.
  • Takiuru Hapori - Google, GitHub, Facebook, Twitter tautoko mo te tautuhi kaiwhakamahi.
  • Whakawhanaunga Kaiwhakamahi - te tukutahitanga o nga kaiwhakamahi mai i nga tūmau LDAP me Active Directory me etahi atu kaiwhakarato tuakiri.
  • piriti Kerberos - te whakamahi i te tūmau Kerberos mo te motuhēhēnga kaiwhakamahi aunoa.
  • Papatohu Kaiwhakahaere - mo te whakahaere whakakotahi i nga tautuhinga me nga whiringa otinga ma te Tukutuku.
  • Papatohu Whakahaere Pūkete - mo te whakahaere-whaiaro o te kōtaha kaiwhakamahi.
  • Whakaritenga o te otinga i runga i te tuakiri umanga o te kamupene.
  • 2FA Motuhēhēnga - Tautoko TOTP/HOTP ma te whakamahi i a Google Authenticator, FreeOTP ranei.
  • Nga Rere Takiuru - te rehitatanga whaiaro a te kaiwhakamahi, te whakaora kupuhipa me te tautuhi, me etahi atu ka taea.
  • Whakahaere Wātū - ka taea e nga kaiwhakahaere te whakahaere i nga waahi kaiwhakamahi mai i te waahi kotahi.
  • Nga Kaitohu Tohu - herea nga huanga kaiwhakamahi, nga mahi me etahi atu huanga e hiahiatia ana ki nga tohu.
  • Te whakahaere kaupapa here ngawari puta noa i te ao, te tono me nga kaiwhakamahi.
  • Tautoko CORS - He tautoko CORS i roto i nga kaiwhakauru kiritaki.
  • Atanga Kaiwhakarato Ratonga (SPI) - He maha nga SPI e taea ai e koe te whakarite i nga ahuatanga rereke o te tūmau: nga rerenga motuhēhēnga, nga kaiwhakarato tuakiri, te mahere kawa, me etahi atu.
  • Kaiwhakarato kiritaki mo nga tono JavaScript, WildFly, JBoss EAP, Fuse, Tomcat, Jetty, Spring.
  • Tautoko mo te mahi me nga momo tono e tautoko ana i te whare pukapuka OpenID Connect Relying Party, SAML 2.0 Service Provider Library ranei.
  • Ka taea te whakawhānui ma te whakamahi i nga monomai.

Mo nga tukanga CI / CD, me te automation o nga tukanga whakahaere i Keycloak, ka taea te whakamahi i te REST API / JAVA API. E waatea ana nga tuhinga ma te hikohiko:

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

Kaiwhakarato Tuakiri Hinonga (Kei te Waahi)

Te kaha ki te whakamotuhēhē i ngā kaiwhakamahi mā ngā ratonga Kaiwhakamahi Federation.

SSO mo te hoahoanga microservice. Ka whakamahia e matou te Keycloak. Wāhanga #1

Ka taea hoki te whakamahi motuhēhēnga whakawhiti - mena ka whakamotuhēhē ngā kaiwhakamahi ki ngā teihanamahi me Kerberos (LDAP, AD ranei), ka taea te whakamotuhēhē aunoa ki Keycloak me te kore e whakauru ano i o raatau ingoa kaiwhakamahi me o raatau kupuhipa.

Mo te whakamotuhēhēnga me te whakamanatanga ake o nga kaiwhakamahi, ka taea te whakamahi i te DBMS hononga, e tino tika ana mo nga taiao whanaketanga, na te mea kaore e uru ki nga tautuhinga roa me nga whakaurunga i te timatanga o nga kaupapa. Ma te taunoa, ka whakamahi a Keycloak i te DBMS i hangaia hei rokiroki i nga tautuhinga me nga raraunga kaiwhakamahi.

He nui te rarangi o nga DBMS tautoko, kei roto ko: MS SQL, Oracle, PostgreSQL, MariaDB, Oracle me etahi atu. Ko nga mea tino whakamatauria inaianei ko Oracle 12C Release1 RAC me Galera 3.12 tautau mo MariaDB 10.1.19.

Kaiwhakarato tuakiri - takiuru hapori

Ka taea te whakamahi i te takiuru mai i nga whatunga hapori. Hei whakahohe i te kaha ki te whakamotuhēhē i ngā kaiwhakamahi, whakamahia te papatohu kaiwhakahaere Keycloack. Ko nga huringa i roto i te waehere tono kaore e hiahiatia ana ka waatea tenei mahi mai i te pouaka ka taea te whakahohe i nga waahanga katoa o te kaupapa.

SSO mo te hoahoanga microservice. Ka whakamahia e matou te Keycloak. Wāhanga #1

Ka taea te whakamahi i nga kaiwhakarato OpenID/SAML Identity mo te motuhēhēnga kaiwhakamahi.

Ko nga ahuatanga whakamanatanga ma te whakamahi i te OAuth2 i Keycloak

Rere Waehere Whakamana - whakamahia me nga tono taha-tumau. Ko tetahi o nga momo whakaaetanga whakamanatanga e tino pai ana na te mea e pai ana mo nga tono tūmau kaore i te waatea te waehere puna o te tono me nga raraunga kiritaki ki nga tangata o waho. Ko te tukanga i tenei keehi kei runga i te ahunga whakamua. Me kaha te tono ki te korero ki tetahi kaihoko-kaiwhakamahi (kaiwhakamahi-kaiwhakamahi), penei i te kaitirotiro paetukutuku - ki te whiwhi i nga waehere whakamana API i tukuna atu ma te kaihoko kaiwhakamahi.

rere huna - ka whakamahia e nga tono pūkoro, paetukutuku ranei (nga tono e rere ana i runga i te taputapu a te kaiwhakamahi).

Ko te momo whakaaetanga whakaaheitanga e whakamahia ana e nga tono pūkoro me te paetukutuku kaore e taea te whakapumau i te muna a te kiritaki. Ka whakamahia ano hoki e te momo whakaaetanga whakaahuru te hurihanga a te kaihoko kaiwhakamahi, ka tukuna te tohu uru ki te kaihoko kaiwhakamahi mo te whakamahi i roto i te tono. Ma tenei ka waatea te tohu ki te kaiwhakamahi me etahi atu tono kei runga i te taputapu a te kaiwhakamahi. Ko tenei momo whakaaetanga kaore e whakamotuhēhē i te tuakiri o te tono, ā, ko te hātepe tonu e whakawhirinaki ana ki te URL whakatika (i rehitatia i mua me te ratonga).

Kare te Rere Maamaa e tautoko i nga tohu whakahou tohu uru.

Te Rerenga Tukunga Tohu Kiritaki — ka whakamahia ina uru te tono ki te API. Ko tenei momo whakaaetanga ka whakamahia mo nga tauwhitinga tūmau-ki-tūmau me mahi i te papamuri me te kore o te taunekeneke a te kaiwhakamahi. Ko te rere o te tuku tohu tohu a te kiritaki ka taea e te ratonga tukutuku (kiritaki muna) te whakamahi i ona ake tohu hei utu mo te whakawhaiaro i te kaiwhakamahi ki te whakamotuhēhē ina waea atu ki tetahi atu ratonga tukutuku. Mo te taumata teitei ake o te haumarutanga, ka taea e te ratonga waea te whakamahi i tetahi tiwhikete (hei utu mo te mea ngaro tiritahi) hei tohu.

Ko te korerotanga OAuth2 e whakaahuatia ana i roto
RFC-6749
RFC-8252
RFC-6819

Tohu JWT me ona painga

Ko te JWT (JSON Tukutuku Token) he paerewa tuwhera (https://tools.ietf.org/html/rfc7519) e tautuhi ana i tetahi huarahi kiato me te pupuri i a ia ano ki te whakawhiti korero i waenga i nga roopu hei ahanoa JSON.

E ai ki te paerewa, e toru nga wahanga o te tohu i te whakatakotoranga turanga-64, ka wehea e nga ira. Ko te waahanga tuatahi ka kiia ko te pane, kei roto te momo tohu me te ingoa o te hash algorithm mo te whiwhi hainatanga mamati. Ko te waahanga tuarua ka pupuri i nga korero taketake (kaiwhakamahi, huanga, me etahi atu). Ko te wahanga tuatoru ko te waitohu matihiko.

. .
Kaua rawa e penapena he tohu ki to DB. Na te mea he rite te tohu whaimana ki te kupuhipa, ko te penapena i te tohu he rite ki te penapena i te kupuhipa i roto i nga tuhinga maamaa.
Tohu uru he tohu e tuku ana ki tana rangatira te uru ki nga rauemi tūmau haumaru. I te nuinga o te wa he poto te ora, ka kawe pea i etahi atu korero penei i te wahitau IP o te roopu e tono ana i te tohu.

Tāmata tohu he tohu ka taea e nga kiritaki te tono tohu urunga hou i muri i te paunga o to ratau oranga. Ko enei tohu ka tukuna mo te wa roa.

Ko nga painga nui o te whakamahi i roto i te hoahoanga microservice:

  • Te kaha ki te uru atu ki nga momo tono me nga ratonga na roto i te whakamotuhēhēnga kotahi te wā.
  • I te kore o te maha o nga huanga e hiahiatia ana i roto i te korero a te kaiwhakamahi, ka taea te whakarangatira me nga raraunga ka taea te taapiri atu ki te utu utu, tae atu ki te aunoa me te rere.
  • Kaore he take ki te penapena i nga korero mo nga waahi hohe, ko te tono a te tūmau me manatoko i te waitohu.
  • He ngawari ake te mana uru ma nga huanga taapiri kei roto i te utu.
  • Ko te whakamahi i te waitohu tohu mo te pane me te utu utu ka whakanui ake i te haumarutanga o te otinga katoa.

Tohu JWT - hanganga

Pane - ma te taunoa, kei roto i te pane te momo tohu me te algorithm e whakamahia ana mo te whakamunatanga.

Ko te momo o te tohu ka rongoa ki te "typ" matua. Ko te kī 'momo' ka warewarehia i te JWT. Mena kei reira te taviri "typ", me JWT tona uara hei tohu he tohu Tukutuku JSON tenei ahanoa.

Ko te matua tuarua "alg" e whakaatu ana i te algorithm i whakamahia hei whakamuna i te tohu. Me tautuhi ki te HS256 ma te taunoa. Kua whakawaeheretia te pane ki base64.

{ "alg": "HS256", "type": "JWT"}
utaina (ihirangi) - ka penapena te utu utu i nga korero e tika ana kia tirohia. Ko ia ki o te utu utu e mohiotia ana he "kereme". Hei tauira, ka taea e koe te whakauru i te tono ma te tono (promo katia). Ia hinaaro tatou e titau manihini i te hoê taata ia apiti mai, e hapono atu tatou i te hoê rata titau-manihini-raa. He mea nui kia tirohia ko te wahitau imeera na te tangata e whakaae ana ki te powhiri, no reira ka whakauruhia e matou tenei wahitau ki roto i te utu utu, mo tenei ka penapenahia e matou ki te matua "imera"

{ "īmera": "[email tiakina]"}

Ko nga taviri kei roto i te utu ka taea te noho noa. Engari, he iti noa nga mea kua rahuitia:

  • iss (Kaiwhakawhiwhi) - Ka tautuhi i te tono e tukuna ana te tohu.
  • sub (Kaupapa) - ka tautuhi i te kaupapa o te tohu.
  • Ko te aud (Matakitaki) he huinga aho tairongo-iti, URI ranei he rarangi o nga kaiwhiwhi o tenei tohu. Ina whiwhi te taha tango i te JWT me te taviri kua hoatu, me tirotiro e ia kei te noho tonu ia i roto i nga kaiwhiwhi - mena ka warewarehia te tohu.
  • exp (Wā Whakamutunga) - Ka tohu i te wa e pau ai te tohu. Ko te paerewa JWT e hiahia ana nga whakatinanatanga katoa ki te whakakore i nga tohu kua pau. Ko te kī exp me he waitohuwā i roto i te hōputu unix.
  • Ko te nbf (Kaore i mua) he wa i roto i te whakatakotoranga unix e whakatau ana i te waa ka whai mana te tohu.
  • iat (I Tukua I) - Ko tenei matua te tohu i te wa i tukuna ai te tohu ka taea te whakamahi hei whakatau i te tau o te JWT. Ko te kī iat me tohu tohuwā i te hōputu unix.
  • Jti (JWT ID) — he aho e tautuhi ana i te tautohu ahurei o tenei tohu, he take-tairongo.

He mea nui kia mohio ko te utu utu kaore e tukuna i roto i te ahua whakamunatia (ahakoa ka taea te kohanga nga tohu ka taea te tuku raraunga whakamunatia). Na reira, e kore e taea e ia te pupuri i nga korero ngaro. Pērā i te pane, ko te utu utu he base64 kua whakawaeheretia.
Waitohu - ka whai taitara me te utu utu, ka taea te tatau i te hainatanga.

Base64-whakawaehere: ka tangohia te pane me te utu, ka honoa ki te aho ma te ira. Katahi ka whakaurua tenei aho me te taviri ngaro ki te algorithm whakamunatanga i tohua ki te pane ("alg" key). Ko te matua he aho ahakoa. Ko nga aho roa ake ka pai ake na te mea ka roa ake te tango.

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

Te Hanga i te Hanganga Kluster Whakaahua Kīkoroak Failover

I te wa e whakamahi ana i te huinga kotahi mo nga kaupapa katoa, ka nui ake nga whakaritenga mo te otinga SSO. I te wa e iti ana te maha o nga kaupapa, kaore e tino kitea enei whakaritenga mo nga kaupapa katoa, engari, me te piki ake o te maha o nga kaiwhakamahi me nga whakaurunga, ka piki ake nga whakaritenga mo te waatea me te mahi.

Ko te whakanui ake i te tupono o te korenga o te SSO kotahi ka piki ake nga whakaritenga mo te hoahoanga otinga me nga tikanga e whakamahia ana mo nga waahanga taapiri, ka arahi ki te SLA tino raru. I runga i tenei ahuatanga, i te nuinga o nga wa i roto i te whakawhanaketanga, i nga waahanga tuatahi ranei o te whakatinana i nga otinga, kei a raatau ake nga hanganga kore-kore-haumaru. I te wa e ahu whakamua ana te whakawhanaketanga, me whakatakoto nga waahi mo te whakawhanaketanga me te whakatikatika. He tino ngawari ki te hanga i te tautau failover ma te whakamahi i te mariko ipu, te huarahi ranu ranei.

Ki te mahi i roto i nga aratau kapoi Hohe/Hohe me te Hohe/Haurangi, me whakarite kia rite nga raraunga ki roto i te papaunga raraunga hononga - me tukutahi nga pokapu raraunga e rua ki waenga i nga pokapu raraunga kua tohatohahia.

Ko te tauira ngawari o te whakaurunga he-kore.

SSO mo te hoahoanga microservice. Ka whakamahia e matou te Keycloak. Wāhanga #1

He aha nga painga o te whakamahi i te roopu kotahi:

  • Te waatea me te mahi.
  • Tautoko mo nga momo mahi: Hohe / Hohe, Hohe / Haahi.
  • Te kaha ki te tauine hihiri - ina whakamahi mariko ipu.
  • Ka taea te whakahaere me te aro turuki.
  • Te huarahi whakakotahi mo te tautuhi / motuhēhētanga / whakamanatanga o nga kaiwhakamahi i roto i nga kaupapa.
  • He maamaa ake te taunekeneke i waenga i nga kaupapa rereke me te kore e uru mai nga kaiwhakamahi.
  • Te kaha ki te whakamahi ano i te tohu JWT i roto i nga kaupapa rereke.
  • Kotahi te waahi whakawhirinaki.
  • He tere ake te whakarewanga o nga kaupapa ma te whakamahi i nga ratonga miihini/puera mariko (kaore he take ki te hiki me te whirihora i etahi atu waahanga).
  • Ka taea te hoko tautoko arumoni mai i te kaihoko.

He aha te rapu i te wa e whakamahere ana i te roopu

DBMS

Kei te whakamahi a Keycloak i te punaha whakahaere papaa raraunga ki te penapena: nga whenua, nga kaihoko, nga kaiwhakamahi, aha atu.
He maha nga momo DBMS e tautokohia ana: MS SQL, Oracle, MySQL, PostgreSQL. Ka tae mai a Keycloak me tana ake papaunga hononga honohono. E taunaki ana kia whakamahia mo nga taiao kore utaina - penei i nga taiao whanaketanga.

Ki te mahi i roto i nga aratau kahui Hohe/Hohe me te Hohe/Haurangi, e hiahiatia ana te riterite o nga raraunga i roto i te patengi raraunga hononga, me te tukutahi i nga pokapu huinga raraunga e rua ki waenga i nga pokapū raraunga.

Keteroki toha (Infinspan)

Kia tika te mahi a te tautau, ka hiahiatia he tukutahitanga taapiri o nga momo keteroki e whai ake nei ma te whakamahi i te Matiti Raraunga JBoss:

Wātū whakamotuhēhē - whakamahia hei tiaki raraunga i te wā e whakamotuhēhē ana i tētahi kaiwhakamahi motuhake. Ko nga tono mai i tenei keteroki ko te kaitirotiro me te tūmau Keycloak anake, kaua ko te tono.

Nga tohu mahi - ka whakamahia mo nga ahuatanga e hiahia ana te kaiwhakamahi ki te whakaū i tetahi hohenga (ma te imeera). Hei tauira, i te wa e warewarehia ana te rerenga kupuhipa, ka whakamahia te keteroki Infinispan actionTokens ki te pupuri i nga metadata e pa ana ki nga tohu mahi e pa ana kua whakamahia, na reira kaore e taea te whakamahi ano.

Te keteroki me te whakakore i nga raraunga tohe tonu - ka whakamahia ki te keteroki i nga raraunga tohe kia karohia nga uiui koretake ki te papaunga raraunga. Ina whakahōuhia e tetahi tūmau Keycloak nga raraunga, me mohio nga atu tūmau Keycloak katoa i roto i nga pokapū raraunga katoa.

Mahi - Ka whakamahia anake ki te tuku i nga karere muhu ki waenga i nga kohinga kapo me nga pokapū raraunga.

Wātū Kaiwhakamahi - ka whakamahia hei penapena raraunga mo nga waahi kaiwhakamahi e whaimana ana mo te roanga o te waahi tirotiro a te kaiwhakamahi. Me tukatuka e te keteroki nga tono HTTP mai i te kaiwhakamahi mutunga me te tono.

Te parenga kaha nanakia - whakamahia ki te whai raraunga mo nga takiuru rahua.

Te whakataurite kawenga

Ko te taurite kawenga te waahi urunga kotahi ki te karakau matua, me tautoko i nga waahi piri.

Taupānga Tūmau

Ka whakamahia ratou ki te whakahaere i te pahekoheko o nga waahanga ki a raatau ano ka taea te mariko, te whakakii ranei ma te whakamahi i nga taputapu aunoa me te whakaihiihi hihiri o nga taputapu aunoatanga hanganga. Ko nga ahuatanga tuku noa i OpenShift, Kubernates, Rancher.

Ka mutu tenei i te wahanga tuatahi - ko te tikanga. I roto i nga raupapa tuhinga e whai ake nei, ka wetewetehia nga tauira o te whakauru ki nga momo kaiwhakarato tuakiri me nga tauira o nga tautuhinga.

Source: will.com

Tāpiri i te kōrero