ఏదైనా పెద్ద కంపెనీలో, మరియు X5 రిటైల్ గ్రూప్ దీనికి మినహాయింపు కాదు, అభివృద్ధి చెందుతున్నప్పుడు, వినియోగదారు అధికారం అవసరమయ్యే ప్రాజెక్ట్ల సంఖ్య పెరుగుతుంది. కాలక్రమేణా, వినియోగదారులు ఒక అప్లికేషన్ నుండి మరొక అప్లికేషన్కు అతుకులు లేకుండా మారడం అవసరం, ఆపై ఒకే సింగిల్-సింగ్-ఆన్ (SSO) సర్వర్ని ఉపయోగించాల్సిన అవసరం ఉంది. అయితే AD వంటి ఐడెంటిటీ ప్రొవైడర్లు లేదా అదనపు అట్రిబ్యూట్లు లేని ఇతరులు ఇప్పటికే వివిధ ప్రాజెక్ట్లలో ఉపయోగించినప్పుడు ఏమి చేయాలి. "ఐడెంటిటీ బ్రోకర్లు" అని పిలువబడే ఒక తరగతి వ్యవస్థలు రక్షించటానికి వస్తాయి. కీక్లోక్, గ్రావిటీ యాక్సెస్ మేనేజ్మెంట్ మొదలైన వాటి ప్రతినిధులు అత్యంత క్రియాత్మకమైనవి. చాలా తరచుగా, వినియోగ సందర్భాలు భిన్నంగా ఉంటాయి: మెషిన్ ఇంటరాక్షన్, యూజర్ పార్టిసిపేషన్ మొదలైనవి. పరిష్కారం అన్ని అవసరాలను ఒకదానిలో కలపగలిగే సౌకర్యవంతమైన మరియు స్కేలబుల్ కార్యాచరణకు మద్దతు ఇవ్వాలి, మరియు అటువంటి పరిష్కారాలు మా కంపెనీకి ఇప్పుడు సూచన బ్రోకర్ ఉంది - కీక్లోక్.
Keycloak అనేది RedHat ద్వారా నిర్వహించబడే ఓపెన్ సోర్స్ గుర్తింపు మరియు యాక్సెస్ నియంత్రణ ఉత్పత్తి. SSO - RH-SSO ఉపయోగించి కంపెనీ ఉత్పత్తులకు ఇది ఆధారం.
ప్రాథమిక అంశాలు
మీరు పరిష్కారాలు మరియు విధానాలను అర్థం చేసుకోవడం ప్రారంభించే ముందు, మీరు ప్రక్రియల నిబంధనలు మరియు క్రమాన్ని నిర్వచించాలి:
గుర్తింపు ఒక విషయాన్ని అతని ఐడెంటిఫైయర్ ద్వారా గుర్తించే ప్రక్రియ (మరో మాటలో చెప్పాలంటే, ఇది పేరు, లాగిన్ లేదా సంఖ్య యొక్క నిర్వచనం).
ప్రమాణీకరణ - ఇది ప్రామాణీకరణ ప్రక్రియ (వినియోగదారు పాస్వర్డ్తో తనిఖీ చేయబడతారు, లేఖ ఎలక్ట్రానిక్ సంతకంతో తనిఖీ చేయబడుతుంది, మొదలైనవి)
అధికార - ఇది వనరుకు ప్రాప్యత యొక్క నిబంధన (ఉదాహరణకు, ఇ-మెయిల్కు).
గుర్తింపు బ్రోకర్ కీక్లాక్
కీలాక్ మైక్రోసర్వీస్ ఆర్కిటెక్చర్ నమూనాలను ఉపయోగించగల ISలో ఉపయోగం కోసం రూపొందించబడిన ఓపెన్ సోర్స్ గుర్తింపు మరియు యాక్సెస్ మేనేజ్మెంట్ సొల్యూషన్.
కీక్లోక్ సింగిల్ సైన్-ఆన్ (SSO), బ్రోకర్డ్ ఐడెంటిటీ అండ్ సోషల్ లాగిన్, యూజర్ ఫెడరేషన్, క్లయింట్ అడాప్టర్లు, అడ్మిన్ కన్సోల్ మరియు అకౌంట్ మేనేజ్మెంట్ కన్సోల్ వంటి ఫీచర్లను అందిస్తుంది.
కీక్లోక్లో ప్రాథమిక కార్యాచరణకు మద్దతు ఉంది:
- బ్రౌజర్ అప్లికేషన్ల కోసం సింగిల్-సైన్ ఆన్ మరియు సింగిల్-సైన్ అవుట్.
- OpenID/OAuth 2.0/SAMLకి మద్దతు.
- గుర్తింపు బ్రోకరింగ్ - బాహ్య OpenID కనెక్ట్ లేదా SAML గుర్తింపు ప్రదాతలను ఉపయోగించి ప్రమాణీకరణ.
- సోషల్ లాగిన్ - వినియోగదారు గుర్తింపు కోసం Google, GitHub, Facebook, Twitter కోసం మద్దతు.
- వినియోగదారు సమాఖ్య - LDAP మరియు యాక్టివ్ డైరెక్టరీ సర్వర్లు మరియు ఇతర గుర్తింపు ప్రదాతల నుండి వినియోగదారుల సమకాలీకరణ.
- Kerberos వంతెన - ఆటోమేటిక్ వినియోగదారు ప్రమాణీకరణ కోసం Kerberos సర్వర్ని ఉపయోగించడం.
- అడ్మిన్ కన్సోల్ - వెబ్ ద్వారా సెట్టింగ్లు మరియు పరిష్కార ఎంపికల ఏకీకృత నిర్వహణ కోసం.
- ఖాతా నిర్వహణ కన్సోల్ - స్వతంత్ర వినియోగదారు ప్రొఫైల్ నిర్వహణ కోసం.
- సంస్థ యొక్క కార్పొరేట్ గుర్తింపు ఆధారంగా పరిష్కారం యొక్క అనుకూలీకరణ.
- 2FA ప్రమాణీకరణ - Google Authenticator లేదా FreeOTPని ఉపయోగించి TOTP/HOTP మద్దతు.
- లాగిన్ ప్రవాహాలు - వినియోగదారు స్వీయ-నమోదు, పాస్వర్డ్ రికవరీ మరియు రీసెట్ మరియు ఇతరాలు సాధ్యమే.
- సెషన్ మేనేజ్మెంట్ - నిర్వాహకులు వినియోగదారు సెషన్లను ఒకే పాయింట్ నుండి నిర్వహించగలరు.
- టోకెన్ మ్యాపర్లు - వినియోగదారు లక్షణాలు, పాత్రలు మరియు ఇతర అవసరమైన లక్షణాలను టోకెన్లుగా బంధించడం.
- రాజ్యం, అప్లికేషన్ మరియు వినియోగదారుల అంతటా సౌకర్యవంతమైన విధాన నిర్వహణ.
- CORS మద్దతు - క్లయింట్ ఎడాప్టర్లు అంతర్నిర్మిత CORS మద్దతును కలిగి ఉంటాయి.
- సర్వీస్ ప్రొవైడర్ ఇంటర్ఫేస్లు (SPI) - సర్వర్లోని వివిధ అంశాలను అనుకూలీకరించడానికి మిమ్మల్ని అనుమతించే పెద్ద సంఖ్యలో SPIలు: ప్రామాణీకరణ ప్రవాహాలు, గుర్తింపు ప్రదాతలు, ప్రోటోకాల్ మ్యాపింగ్ మరియు మరిన్ని.
- JavaScript అప్లికేషన్ల కోసం క్లయింట్ అడాప్టర్లు, WildFly, JBoss EAP, ఫ్యూజ్, టామ్క్యాట్, జెట్టీ, స్ప్రింగ్.
- OpenID కనెక్ట్ రిలయింగ్ పార్టీ లైబ్రరీ లేదా SAML 2.0 సర్వీస్ ప్రొవైడర్ లైబ్రరీకి మద్దతు ఇచ్చే వివిధ అప్లికేషన్లతో పని చేయడానికి మద్దతు.
- ప్లగిన్లను ఉపయోగించి విస్తరించదగినది.
CI / CD ప్రక్రియల కోసం, అలాగే కీక్లోక్లో నిర్వహణ ప్రక్రియల ఆటోమేషన్ కోసం, REST API / JAVA APIని ఉపయోగించవచ్చు. డాక్యుమెంటేషన్ ఎలక్ట్రానిక్గా అందుబాటులో ఉంది:
REST API
జావా API
ఎంటర్ప్రైజ్ ఐడెంటిటీ ప్రొవైడర్లు (ఆన్-ప్రిమైజ్)
వినియోగదారు సమాఖ్య సేవల ద్వారా వినియోగదారు ప్రమాణీకరణ అవకాశం.
పాస్-త్రూ ప్రామాణీకరణ కూడా ఉపయోగించవచ్చు - వినియోగదారులు Kerberos (LDAP లేదా AD)తో వర్క్స్టేషన్లలో ప్రామాణీకరించబడితే, వారి వినియోగదారు పేరు మరియు పాస్వర్డ్ను మళ్లీ అందించాల్సిన అవసరం లేకుండా వారు స్వయంచాలకంగా కీక్లోక్కి ప్రామాణీకరించబడతారు.
ప్రామాణీకరణ మరియు వినియోగదారుల యొక్క మరింత అధికారీకరణ కోసం, ప్రాజెక్ట్ల ప్రారంభ దశల్లో సుదీర్ఘమైన సెట్టింగ్లు మరియు ఇంటిగ్రేషన్లను కలిగి ఉండనందున, అభివృద్ధి వాతావరణాలకు అత్యంత వర్తించే రిలేషనల్ DBMSని ఉపయోగించడం సాధ్యమవుతుంది. డిఫాల్ట్గా, సెట్టింగ్లు మరియు వినియోగదారు డేటాను నిల్వ చేయడానికి కీక్లోక్ అంతర్నిర్మిత DBMSని ఉపయోగిస్తుంది.
మద్దతు ఉన్న DBMS జాబితా విస్తృతమైనది మరియు వీటిని కలిగి ఉంటుంది: MS SQL, Oracle, PostgreSQL, MariaDB, Oracle మరియు ఇతరులు. MariaDB 12 కోసం ఇప్పటివరకు ఎక్కువగా పరీక్షించబడినవి Oracle 1C Release3.12 RAC మరియు Galera 10.1.19 క్లస్టర్.
గుర్తింపు ప్రదాతలు - సామాజిక లాగిన్
సోషల్ నెట్వర్క్ల నుండి లాగిన్ను ఉపయోగించడం సాధ్యపడుతుంది. వినియోగదారులను ప్రామాణీకరించే సామర్థ్యాన్ని ప్రారంభించడానికి, కీక్లాక్ అడ్మిన్ కన్సోల్ని ఉపయోగించండి. అప్లికేషన్ కోడ్కు ఎటువంటి మార్పులు అవసరం లేదు మరియు ఈ కార్యాచరణ బాక్స్ వెలుపల అందుబాటులో ఉంది మరియు ప్రాజెక్ట్ యొక్క ఏ దశలోనైనా సక్రియం చేయబడుతుంది.
వినియోగదారు ప్రమాణీకరణ కోసం OpenID/SAML గుర్తింపు ప్రదాతలను ఉపయోగించడం సాధ్యమవుతుంది.
కీక్లోక్లో OAuth2ని ఉపయోగించే సాధారణ అధికార దృశ్యాలు
ఆథరైజేషన్ కోడ్ ఫ్లో - సర్వర్ వైపు అనువర్తనాలతో ఉపయోగించబడుతుంది. అప్లికేషన్ యొక్క సోర్స్ కోడ్ మరియు క్లయింట్ డేటా ఇతరులకు అందుబాటులో లేని సర్వర్-సైడ్ అప్లికేషన్లకు ఇది బాగా సరిపోయే అధికార అనుమతి యొక్క అత్యంత సాధారణ రకాల్లో ఒకటి. ఈ సందర్భంలో ప్రక్రియ దారి మళ్లింపుపై ఆధారపడి ఉంటుంది. వినియోగదారు ఏజెంట్ ద్వారా మళ్లించబడిన API అధికార కోడ్లను స్వీకరించడానికి - అప్లికేషన్ తప్పనిసరిగా వెబ్ బ్రౌజర్ వంటి వినియోగదారు ఏజెంట్ (యూజర్-ఏజెంట్)తో పరస్పర చర్య చేయగలగాలి.
అవ్యక్త ప్రవాహం - మొబైల్ లేదా వెబ్ అప్లికేషన్ల ద్వారా ఉపయోగించబడుతుంది (యూజర్ పరికరంలో నడుస్తున్న అప్లికేషన్లు).
క్లయింట్ గోప్యతకు హామీ ఇవ్వలేని మొబైల్ మరియు వెబ్ అప్లికేషన్ల ద్వారా అవ్యక్త అధికార అనుమతి రకం ఉపయోగించబడుతుంది. అవ్యక్త అనుమతి రకం వినియోగదారు ఏజెంట్ దారి మళ్లింపును కూడా ఉపయోగిస్తుంది, ఇక్కడ అప్లికేషన్లో తదుపరి ఉపయోగం కోసం యాక్సెస్ టోకెన్ వినియోగదారు ఏజెంట్కు పంపబడుతుంది. ఇది వినియోగదారు పరికరంలో వినియోగదారు మరియు ఇతర అనువర్తనాలకు టోకెన్ను అందుబాటులో ఉంచుతుంది. ఈ రకమైన అధికార అనుమతి అప్లికేషన్ యొక్క గుర్తింపును ప్రామాణీకరించదు మరియు ప్రక్రియ మళ్లింపు URL (గతంలో సేవతో నమోదు చేయబడింది)పై ఆధారపడి ఉంటుంది.
ఇంప్లిసిట్ ఫ్లో యాక్సెస్ టోకెన్ రిఫ్రెష్ టోకెన్లకు మద్దతు ఇవ్వదు.
క్లయింట్ క్రెడెన్షియల్స్ గ్రాంట్ ఫ్లో — అప్లికేషన్ APIని యాక్సెస్ చేసినప్పుడు ఉపయోగించబడుతుంది. ఈ రకమైన అధికార అనుమతి సాధారణంగా సర్వర్-టు-సర్వర్ పరస్పర చర్యల కోసం ఉపయోగించబడుతుంది, ఇది తక్షణ వినియోగదారు పరస్పర చర్య లేకుండానే నేపథ్యంలో నిర్వహించబడుతుంది. క్లయింట్ క్రెడెన్షియల్స్ గ్రాంట్ ఫ్లో మరొక వెబ్ సేవకు కాల్ చేస్తున్నప్పుడు ప్రామాణీకరించడానికి వినియోగదారుని వలె నటించడానికి బదులుగా దాని స్వంత ఆధారాలను ఉపయోగించడానికి వెబ్ సేవ (రహస్య క్లయింట్)ను అనుమతిస్తుంది. అధిక స్థాయి భద్రత కోసం, కాలింగ్ సేవ ఒక ప్రమాణపత్రాన్ని (భాగస్వామ్య రహస్యానికి బదులుగా) క్రెడెన్షియల్గా ఉపయోగించడం సాధ్యమవుతుంది.
OAuth2 స్పెసిఫికేషన్ వివరించబడింది
JWT టోకెన్ మరియు దాని ప్రయోజనాలు
JWT (JSON వెబ్ టోకెన్) ఒక ఓపెన్ స్టాండర్డ్ (
ప్రమాణం ప్రకారం, టోకెన్ బేస్-64 ఆకృతిలో మూడు భాగాలను కలిగి ఉంటుంది, చుక్కలతో వేరు చేయబడుతుంది. మొదటి భాగాన్ని హెడర్ అని పిలుస్తారు, ఇందులో టోకెన్ రకం మరియు డిజిటల్ సంతకాన్ని పొందడం కోసం హ్యాష్ అల్గారిథమ్ పేరు ఉంటుంది. రెండవ భాగం ప్రాథమిక సమాచారాన్ని నిల్వ చేస్తుంది (వినియోగదారు, గుణాలు మొదలైనవి). మూడవ భాగం డిజిటల్ సంతకం.
. .
మీ DBలో టోకెన్ను ఎప్పుడూ నిల్వ చేయవద్దు. చెల్లుబాటు అయ్యే టోకెన్ పాస్వర్డ్కు సమానం కాబట్టి, టోకెన్ను నిల్వ చేయడం పాస్వర్డ్ను స్పష్టమైన వచనంలో నిల్వ చేయడం లాంటిది.
యాక్సెస్ టోకెన్ సురక్షిత సర్వర్ వనరులకు దాని యజమాని యాక్సెస్ను మంజూరు చేసే టోకెన్. ఇది సాధారణంగా తక్కువ జీవితకాలం కలిగి ఉంటుంది మరియు టోకెన్ను అభ్యర్థించే పార్టీ యొక్క IP చిరునామా వంటి అదనపు సమాచారాన్ని కలిగి ఉండవచ్చు.
టోకెన్ని రిఫ్రెష్ చేయండి క్లయింట్లు వారి జీవితకాలం ముగిసిన తర్వాత కొత్త యాక్సెస్ టోకెన్లను అభ్యర్థించడానికి అనుమతించే టోకెన్. ఈ టోకెన్లు సాధారణంగా చాలా కాలం పాటు జారీ చేయబడతాయి.
మైక్రోసర్వీస్ ఆర్కిటెక్చర్లో ఉపయోగించడం యొక్క ప్రధాన ప్రయోజనాలు:
- ఒక పర్యాయ ప్రమాణీకరణ ద్వారా వివిధ అప్లికేషన్లు మరియు సేవలను యాక్సెస్ చేయగల సామర్థ్యం.
- వినియోగదారు ప్రొఫైల్లో అవసరమైన అనేక లక్షణాలు లేనప్పుడు, ఆటోమేటెడ్ మరియు ఆన్-ది-ఫ్లైతో సహా పేలోడ్కు జోడించబడే డేటాతో మెరుగుపరచడం సాధ్యమవుతుంది.
- సక్రియ సెషన్ల గురించి సమాచారాన్ని నిల్వ చేయవలసిన అవసరం లేదు, సర్వర్ అప్లికేషన్ సంతకాన్ని మాత్రమే ధృవీకరించాలి.
- పేలోడ్లోని అదనపు లక్షణాల ద్వారా మరింత సౌకర్యవంతమైన యాక్సెస్ నియంత్రణ.
- హెడర్ మరియు పేలోడ్ కోసం టోకెన్ సంతకాన్ని ఉపయోగించడం మొత్తం పరిష్కారం యొక్క భద్రతను పెంచుతుంది.
JWT టోకెన్ - కూర్పు
శీర్షిక - డిఫాల్ట్గా, హెడర్లో టోకెన్ రకం మరియు ఎన్క్రిప్షన్ కోసం ఉపయోగించే అల్గోరిథం మాత్రమే ఉంటుంది.
టోకెన్ రకం "టైప్" కీలో నిల్వ చేయబడుతుంది. JWTలో 'టైప్' కీ విస్మరించబడింది. "టైప్" కీ ఉన్నట్లయితే, ఈ వస్తువు JSON వెబ్ టోకెన్ అని సూచించడానికి దాని విలువ తప్పనిసరిగా JWT అయి ఉండాలి.
రెండవ కీ "alg" టోకెన్ను గుప్తీకరించడానికి ఉపయోగించే అల్గారిథమ్ను నిర్దేశిస్తుంది. డిఫాల్ట్గా ఇది HS256కి సెట్ చేయబడాలి. హెడర్ బేస్ 64లో ఎన్కోడ్ చేయబడింది.
{ "alg": "HS256", "type": "JWT"}
పేలోడ్ (కంటెంట్) - ధృవీకరించాల్సిన ఏదైనా సమాచారాన్ని పేలోడ్ నిల్వ చేస్తుంది. పేలోడ్లోని ప్రతి కీని "స్టేట్మెంట్" అంటారు. ఉదాహరణకు, మీరు ఆహ్వానం (క్లోజ్డ్ ప్రమోషన్) ద్వారా మాత్రమే దరఖాస్తును నమోదు చేయవచ్చు. మేము ఎవరినైనా పాల్గొనడానికి ఆహ్వానించాలనుకున్నప్పుడు, మేము వారికి ఆహ్వాన లేఖను పంపుతాము. ఇమెయిల్ చిరునామా ఆహ్వానాన్ని అంగీకరించే వ్యక్తికి చెందినదని తనిఖీ చేయడం ముఖ్యం, కాబట్టి మేము ఈ చిరునామాను పేలోడ్లో చేర్చుతాము, దీని కోసం మేము దానిని "ఇమెయిల్" కీలో నిల్వ చేస్తాము
{ "ఇమెయిల్": "[ఇమెయిల్ రక్షించబడింది]"}
పేలోడ్లోని కీలు ఏకపక్షంగా ఉండవచ్చు. అయితే, కొన్ని రిజర్వ్ చేయబడ్డాయి:
- iss (ఇష్యూయర్) - టోకెన్ పంపబడుతున్న అప్లికేషన్ను గుర్తిస్తుంది.
- ఉప (విషయం) - టోకెన్ యొక్క విషయాన్ని నిర్వచిస్తుంది.
- aud (ప్రేక్షకులు) - కేస్-సెన్సిటివ్ స్ట్రింగ్స్ లేదా URIల శ్రేణి, ఈ టోకెన్ గ్రహీతల జాబితా. స్వీకరించే పక్షం ఇచ్చిన కీతో JWTని స్వీకరించినప్పుడు, అది తప్పనిసరిగా గ్రహీతలలో స్వయంగా తనిఖీ చేయాలి - లేకపోతే టోకెన్ను విస్మరించండి.
- exp (గడువు సమయం) - టోకెన్ గడువు ముగిసినప్పుడు సూచిస్తుంది. JWT ప్రమాణం ప్రకారం అన్ని అమలులు గడువు ముగిసిన టోకెన్లను తిరస్కరించాలి. ఎక్స్ కీ తప్పనిసరిగా unix ఆకృతిలో టైమ్స్టాంప్ అయి ఉండాలి.
- nbf (నాట్ బిఫోర్) అనేది unix ఫార్మాట్లోని సమయం, ఇది టోకెన్ చెల్లుబాటు అయ్యే క్షణాన్ని నిర్ణయిస్తుంది.
- iat (ఇష్యూ చేయబడింది) - ఈ కీ టోకెన్ జారీ చేయబడిన సమయాన్ని సూచిస్తుంది మరియు JWT వయస్సుని నిర్ణయించడానికి ఉపయోగించవచ్చు. iat కీ తప్పనిసరిగా unix ఆకృతిలో టైమ్స్టాంప్ అయి ఉండాలి.
- Jti (JWT ID) — ఈ టోకెన్ యొక్క ప్రత్యేక ఐడెంటిఫైయర్, కేస్-సెన్సిటివ్ని నిర్వచించే స్ట్రింగ్.
పేలోడ్ ఎన్క్రిప్టెడ్ రూపంలో ప్రసారం చేయబడదని అర్థం చేసుకోవడం ముఖ్యం (టోకెన్లను గూడులో ఉంచవచ్చు మరియు ఎన్క్రిప్టెడ్ డేటాను ప్రసారం చేయడం సాధ్యమవుతుంది). అందువల్ల, ఇది ఎటువంటి రహస్య సమాచారాన్ని నిల్వ చేయదు. హెడర్ వలె, పేలోడ్ బేస్64 ఎన్కోడ్ చేయబడింది.
సంతకం - మనకు టైటిల్ మరియు పేలోడ్ ఉన్నప్పుడు, మనం సంతకాన్ని లెక్కించవచ్చు.
Base64-ఎన్కోడ్: హెడర్ మరియు పేలోడ్ తీసుకోబడ్డాయి, అవి చుక్క ద్వారా స్ట్రింగ్గా మిళితం చేయబడతాయి. అప్పుడు ఈ స్ట్రింగ్ మరియు రహస్య కీ హెడర్ ("alg" కీ)లో పేర్కొన్న ఎన్క్రిప్షన్ అల్గారిథమ్కి ఇన్పుట్ చేయబడతాయి. కీ ఏదైనా స్ట్రింగ్ కావచ్చు. తీయడానికి ఎక్కువ సమయం పడుతుంది కాబట్టి పొడవైన స్ట్రింగ్లకు ఎక్కువ ప్రాధాన్యత ఇవ్వబడుతుంది.
{"alg":"RSA1_5","payload":"A128CBC-HS256"}
కీక్లోక్ ఫెయిల్ఓవర్ క్లస్టర్ ఆర్కిటెక్చర్ను నిర్మించడం
అన్ని ప్రాజెక్ట్ల కోసం ఒకే క్లస్టర్ని ఉపయోగిస్తున్నప్పుడు, SSO సొల్యూషన్ కోసం పెరిగిన అవసరాలు ఉన్నాయి. ప్రాజెక్ట్ల సంఖ్య తక్కువగా ఉన్నప్పుడు, అన్ని ప్రాజెక్ట్లకు ఈ అవసరాలు అంత ముఖ్యమైనవి కావు, అయినప్పటికీ, వినియోగదారుల సంఖ్య మరియు ఇంటిగ్రేషన్లు పెరిగేకొద్దీ, లభ్యత మరియు పనితీరు కోసం అవసరాలు పెరుగుతాయి.
సింగిల్ SSO వైఫల్యం యొక్క ప్రమాదాన్ని పెంచడం వలన సొల్యూషన్ ఆర్కిటెక్చర్ మరియు అనవసరమైన భాగాల కోసం ఉపయోగించే పద్ధతుల అవసరాలు పెరుగుతాయి మరియు చాలా గట్టి SLAకి దారి తీస్తుంది. ఈ విషయంలో, చాలా తరచుగా అభివృద్ధి లేదా పరిష్కారాలను అమలు చేసే ప్రారంభ దశలలో, ప్రాజెక్టులు వాటి స్వంత తప్పు-తట్టుకోని మౌలిక సదుపాయాలను కలిగి ఉంటాయి. అభివృద్ధి చెందుతున్నప్పుడు, అభివృద్ధి మరియు స్కేలింగ్ కోసం అవకాశాలను నిర్మించడం అవసరం. కంటైనర్ వర్చువలైజేషన్ లేదా హైబ్రిడ్ విధానాన్ని ఉపయోగించి ఫెయిల్ఓవర్ క్లస్టర్ను నిర్మించడం చాలా సరళమైనది.
యాక్టివ్/యాక్టివ్ మరియు యాక్టివ్/పాసివ్ క్లస్టర్ మోడ్లలో పని చేయడానికి, రిలేషనల్ డేటాబేస్లో డేటా స్థిరత్వాన్ని నిర్ధారించడం అవసరం - రెండు డేటాబేస్ నోడ్లు వేర్వేరు జియో-డిస్ట్రిబ్యూటెడ్ డేటా సెంటర్ల మధ్య సమకాలీకరించబడాలి.
తప్పు-తట్టుకునే సంస్థాపనకు సరళమైన ఉదాహరణ.
ఒకే క్లస్టర్ని ఉపయోగించడం వల్ల కలిగే ప్రయోజనాలు ఏమిటి:
- అధిక లభ్యత మరియు పనితీరు.
- ఆపరేటింగ్ మోడ్లకు మద్దతు: యాక్టివ్ / యాక్టివ్, యాక్టివ్ / నిష్క్రియ.
- డైనమిక్ స్కేలింగ్ యొక్క అవకాశం - కంటైనర్ వర్చువలైజేషన్ని ఉపయోగిస్తున్నప్పుడు.
- కేంద్రీకృత నిర్వహణ మరియు పర్యవేక్షణ యొక్క అవకాశం.
- ప్రాజెక్ట్లలో వినియోగదారులను గుర్తించడం/ప్రామాణీకరించడం/అధీకృతం చేయడం కోసం ఏకీకృత విధానం.
- వినియోగదారు పరస్పర చర్య లేకుండా వివిధ ప్రాజెక్ట్ల మధ్య మరింత పారదర్శక పరస్పర చర్య.
- వివిధ ప్రాజెక్ట్లలో JWT టోకెన్ని మళ్లీ ఉపయోగించగల సామర్థ్యం.
- విశ్వాసం యొక్క ఒకే పాయింట్.
- మైక్రోసర్వీస్/కంటైనర్ వర్చువలైజేషన్ని ఉపయోగించి ప్రాజెక్ట్ల వేగవంతమైన ప్రారంభం (అదనపు భాగాలను ఎత్తడం మరియు కాన్ఫిగర్ చేయడం అవసరం లేదు).
- విక్రేత నుండి వాణిజ్య మద్దతును కొనుగోలు చేయడం సాధ్యపడుతుంది.
క్లస్టర్ను ప్లాన్ చేసేటప్పుడు ఏమి పరిగణించాలి
DBMS
కీక్లోక్ నిల్వ చేయడానికి డేటాబేస్ మేనేజ్మెంట్ సిస్టమ్ను ఉపయోగిస్తుంది: రాజ్యాలు, క్లయింట్లు, వినియోగదారులు మొదలైనవి.
DBMS యొక్క విస్తృత శ్రేణికి మద్దతు ఉంది: MS SQL, Oracle, MySQL, PostgreSQL. కీక్లోక్ దాని స్వంత అంతర్నిర్మిత రిలేషనల్ డేటాబేస్తో వస్తుంది. డెవలప్మెంట్ ఎన్విరాన్మెంట్ల వంటి లైట్ డ్యూటీ పరిసరాలలో ఉపయోగించడానికి సిఫార్సు చేయబడింది.
యాక్టివ్/యాక్టివ్ మరియు యాక్టివ్/పాసివ్ క్లస్టర్ మోడ్లలో పని చేయడానికి, రిలేషనల్ డేటాబేస్లో డేటా స్థిరత్వం అవసరం మరియు డేటాబేస్ క్లస్టర్ నోడ్లు రెండూ డేటా సెంటర్ల మధ్య సింక్రోనస్గా రెప్లికేట్ చేయబడతాయి.
పంపిణీ చేయబడిన కాష్ (ఇన్ఫిన్స్పాన్)
క్లస్టర్ సరిగ్గా పని చేయడానికి, JBoss డేటా గ్రిడ్ని ఉపయోగించి కింది కాష్ రకాల అదనపు సింక్రొనైజేషన్ అవసరం:
ప్రామాణీకరణ సెషన్లు - నిర్దిష్ట వినియోగదారుని ప్రామాణీకరించేటప్పుడు డేటాను సేవ్ చేయడానికి ఉపయోగిస్తారు. ఈ కాష్ నుండి అభ్యర్థనలు సాధారణంగా బ్రౌజర్ మరియు కీక్లోక్ సర్వర్ను మాత్రమే కలిగి ఉంటాయి, అప్లికేషన్ కాదు.
వినియోగదారు చర్యను అసమకాలికంగా (ఇమెయిల్ ద్వారా) నిర్ధారించాల్సిన సందర్భాల కోసం యాక్షన్ టోకెన్లు ఉపయోగించబడతాయి. ఉదాహరణకు, పాస్వర్డ్ను మర్చిపోయేటప్పుడు, ఇప్పటికే ఉపయోగించిన అనుబంధిత చర్య టోకెన్ల గురించిన మెటాడేటాను ట్రాక్ చేయడానికి actionTokens Infinispan కాష్ ఉపయోగించబడుతుంది, కనుక ఇది మళ్లీ ఉపయోగించబడదు.
నిరంతర డేటా యొక్క కాషింగ్ మరియు చెల్లుబాటు - డేటాబేస్కు అనవసరమైన ప్రశ్నలను నివారించడానికి నిరంతర డేటాను కాష్ చేయడానికి ఉపయోగించబడుతుంది. ఏదైనా Keycloak సర్వర్ డేటాను అప్డేట్ చేసినప్పుడు, అన్ని డేటా సెంటర్లలోని అన్ని ఇతర Keycloak సర్వర్లు దాని గురించి తప్పనిసరిగా తెలుసుకోవాలి.
పని - క్లస్టర్ నోడ్లు మరియు డేటా సెంటర్ల మధ్య చెల్లని సందేశాలను పంపడానికి మాత్రమే ఉపయోగించబడుతుంది.
వినియోగదారు సెషన్లు - వినియోగదారు యొక్క బ్రౌజర్ సెషన్ వ్యవధికి చెల్లుబాటు అయ్యే వినియోగదారు సెషన్ డేటాను నిల్వ చేయడానికి ఉపయోగించబడుతుంది. కాష్ తప్పనిసరిగా తుది వినియోగదారు మరియు అప్లికేషన్ నుండి HTTP అభ్యర్థనలను ప్రాసెస్ చేయాలి.
బ్రూట్ ఫోర్స్ ప్రొటెక్షన్ - విఫలమైన లాగిన్ల గురించి డేటాను ట్రాక్ చేయడానికి ఉపయోగించబడుతుంది.
లోడ్ బ్యాలెన్సింగ్
లోడ్ బ్యాలెన్సర్ అనేది కీక్లాక్కి సింగిల్ ఎంట్రీ పాయింట్ మరియు తప్పనిసరిగా స్టిక్కీ సెషన్లకు మద్దతు ఇవ్వాలి.
అప్లికేషన్ సర్వర్లు
అవి ఒకదానితో ఒకటి భాగాల పరస్పర చర్యను నియంత్రించడానికి ఉపయోగించబడతాయి మరియు ఇప్పటికే ఉన్న ఆటోమేషన్ టూల్స్ మరియు ఇన్ఫ్రాస్ట్రక్చర్ ఆటోమేషన్ టూల్స్ యొక్క డైనమిక్ స్కేలింగ్ని ఉపయోగించి వర్చువలైజ్ చేయవచ్చు లేదా కంటెయినరైజ్ చేయవచ్చు. OpenShift, Kubernates, Rancherలో అత్యంత సాధారణ విస్తరణ దృశ్యాలు.
ఇది మొదటి భాగాన్ని ముగించింది - సైద్ధాంతికమైనది. తదుపరి కథనాల శ్రేణిలో, వివిధ గుర్తింపు ప్రదాతలతో అనుసంధానాల ఉదాహరణలు మరియు సెట్టింగ్ల ఉదాహరణలు విశ్లేషించబడతాయి.
మూలం: www.habr.com