ක්ෂුද්ර සේවා ගෘහ නිර්මාණ ශිල්පය පිළිබඳ SSO. අපි Keycloak භාවිතා කරනවා. #1 කොටස

ඕනෑම විශාල සමාගමක සහ X5 සිල්ලර සමූහය ව්‍යතිරේකයක් නොවේ, එය වර්ධනය වන විට, පරිශීලක අවසරය අවශ්‍ය ව්‍යාපෘති ගණන වැඩි වේ. කාලයාගේ ඇවෑමෙන්, පරිශීලකයින් එක් යෙදුමකින් තවත් යෙදුමකට බාධාවකින් තොරව සංක්‍රමණය වීම අවශ්‍ය වන අතර, පසුව තනි තනි-Sing-On (SSO) සේවාදායකයක් භාවිතා කිරීමට අවශ්‍ය වේ. නමුත් AD වැනි අනන්‍යතා සපයන්නන් හෝ අමතර ගුණාංග නොමැති වෙනත් අය දැනටමත් විවිධ ව්‍යාපෘතිවල භාවිතා කරන විට කුමක් සිදුවේද? "හඳුනාගැනීමේ තැරැව්කරුවන්" යනුවෙන් හැඳින්වෙන පද්ධති පන්තියක් ගලවා ගැනීමට පැමිණෙනු ඇත. වඩාත්ම ක්‍රියාකාරී වන්නේ එහි නියෝජිතයන් වන Keycloak, Gravitee Access management යනාදී ය. බොහෝ විට භාවිත අවස්ථා වෙනස් විය හැකිය: යන්ත්‍ර අන්තර්ක්‍රියා, පරිශීලක සහභාගීත්වය, ආදිය. විසඳුම සියලු අවශ්‍යතා එකකින් ඒකාබද්ධ කළ හැකි නම්‍යශීලී සහ පරිමාණ කළ හැකි ක්‍රියාකාරීත්වයට සහාය විය යුතුය. සහ එවැනි විසඳුම් අපගේ සමාගමට දැන් දර්ශක තැරැව්කරුවෙකු ඇත - Keycloak.

ක්ෂුද්ර සේවා ගෘහ නිර්මාණ ශිල්පය පිළිබඳ SSO. අපි Keycloak භාවිතා කරනවා. #1 කොටස

Keycloak යනු RedHat විසින් පවත්වාගෙන යනු ලබන විවෘත මූලාශ්‍ර අනන්‍යතා සහ ප්‍රවේශ පාලන නිෂ්පාදනයකි. SSO - RH-SSO භාවිතා කරන සමාගමේ නිෂ්පාදන සඳහා එය පදනම වේ.

මූලික සංකල්ප

ඔබ විසඳුම් සහ ප්‍රවේශයන් සමඟ කටයුතු කිරීමට පෙර, ඔබ ක්‍රියාවලිවල නියමයන් සහ අනුපිළිවෙල තීරණය කළ යුතුය:

ක්ෂුද්ර සේවා ගෘහ නිර්මාණ ශිල්පය පිළිබඳ SSO. අපි Keycloak භාවිතා කරනවා. #1 කොටස

හඳුනා ගැනීම යනු ඔහුගේ හැඳුනුම්කාරකය මගින් විෂයයක් හඳුනාගැනීමේ ක්‍රියා පටිපාටියකි (වෙනත් වචන වලින් කිවහොත්, මෙය නමක, පිවිසුමේ හෝ අංකයක අර්ථ දැක්වීමයි).

සත්යාපනය - මෙය සත්‍යාපන ක්‍රියා පටිපාටියකි (පරිශීලකයා මුරපදයකින් පරීක්ෂා කරනු ලැබේ, ලිපිය විද්‍යුත් අත්සනකින් පරීක්ෂා කරනු ලැබේ, ආදිය)

අවසරය - මෙය සම්පතකට ප්‍රවේශය ලබා දීමයි (උදාහරණයක් ලෙස, විද්‍යුත් තැපෑලට).

අනන්‍යතා තැරැව්කරු Keycloak

යතුරු පුවරුව ක්ෂුද්‍ර සේවා ගෘහ නිර්මාණ රටා භාවිතා කළ හැකි IS හි භාවිතය සඳහා නිර්මාණය කර ඇති විවෘත මූලාශ්‍ර අනන්‍යතා සහ ප්‍රවේශ කළමනාකරණ විසඳුමකි.

Keycloak තනි පුරනය වීම (SSO), තැරැව්කාර අනන්‍යතාවය සහ සමාජ පිවිසුම, පරිශීලක සම්මේලනය, සේවාදායක ඇඩැප්ටර, පරිපාලක කොන්සෝලය සහ ගිණුම් කළමනාකරණ කොන්සෝලය වැනි විශේෂාංග ලබා දෙයි.

Keycloak මගින් සහාය දක්වන මූලික ක්‍රියාකාරීත්වය:

  • බ්‍රවුසර යෙදුම් සඳහා තනි පුරනය වීම සහ තනිව වරනය වීම.
  • OpenID/OAuth 2.0/SAML සඳහා සහාය.
  • අනන්‍යතා තැරැව්කරණය - බාහිර OpenID Connect හෝ SAML අනන්‍යතා සපයන්නන් භාවිතයෙන් සත්‍යාපනය කිරීම.
  • සමාජ පිවිසුම - පරිශීලක හඳුනාගැනීම සඳහා Google, GitHub, Facebook, Twitter සහාය.
  • පරිශීලක සම්මේලනය - LDAP සහ Active Directory servers සහ වෙනත් අනන්‍යතා සපයන්නන්ගෙන් පරිශීලකයින් සමමුහුර්ත කිරීම.
  • Kerberos bridge - ස්වයංක්‍රීය පරිශීලක සත්‍යාපනය සඳහා Kerberos සේවාදායකයක් භාවිතා කිරීම.
  • පරිපාලක කොන්සෝලය - වෙබය හරහා සැකසුම් සහ විසඳුම් විකල්ප ඒකාබද්ධ කළමණාකරණය සඳහා.
  • ගිණුම් කළමනාකරණ කොන්සෝලය - පරිශීලක පැතිකඩ ස්වයං කළමනාකරණය සඳහා.
  • සමාගමේ ආයතනික අනන්‍යතාවය මත පදනම්ව විසඳුම අභිරුචිකරණය කිරීම.
  • 2FA සත්‍යාපනය - Google Authenticator හෝ FreeOTP භාවිතයෙන් TOTP/HOTP සහාය.
  • පිවිසුම් ප්‍රවාහ - පරිශීලක ස්වයං-ලියාපදිංචිය, මුරපද ප්‍රතිසාධනය සහ යළි පිහිටුවීම සහ වෙනත් ඒවා කළ හැකිය.
  • සැසි කළමනාකරණය - පරිපාලකයින්ට තනි ලක්ෂ්‍යයකින් පරිශීලක සැසි කළමනාකරණය කළ හැකිය.
  • ටෝකන් සිතියම්කරුවන් - පරිශීලක ගුණාංග, භූමිකාවන් සහ ටෝකනවලට අවශ්‍ය අනෙකුත් ගුණාංග බැඳීම.
  • ක්ෂේත්‍රය, යෙදුම් සහ පරිශීලකයන් හරහා නම්‍යශීලී ප්‍රතිපත්ති කළමනාකරණය.
  • CORS සහාය - සේවාලාභී ඇඩප්ටරයන් තුළ CORS සහාය ඇත.
  • සේවා සපයන්නාගේ අතුරුමුහුණත් (SPI) - ඔබට සේවාදායකයේ විවිධ අංග අභිරුචිකරණය කිරීමට ඉඩ සලසන SPI විශාල සංඛ්‍යාවක්: සත්‍යාපන ප්‍රවාහ, අනන්‍යතා සපයන්නන්, ප්‍රොටෝකෝල සිතියම්කරණය සහ තවත් දේ.
  • JavaScript යෙදුම්, WildFly, JBoss EAP, Fuse, Tomcat, Jetty, Spring සඳහා සේවාලාභී ඇඩප්ටර.
  • OpenID Connect Relying Party library හෝ SAML 2.0 Service Provider Library සඳහා සහය දක්වන විවිධ යෙදුම් සමඟ වැඩ කිරීම සඳහා සහාය.
  • ප්ලගින භාවිතයෙන් පුළුල් කළ හැකිය.

CI / CD ක්‍රියාවලි සඳහා මෙන්ම Keycloak හි කළමනාකරණ ක්‍රියාවලීන් ස්වයංක්‍රීය කිරීම සඳහා, REST API / JAVA API භාවිතා කළ හැක. ලේඛන ඉලෙක්ට්රොනිකව ලබා ගත හැකිය:

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

ව්‍යවසාය අනන්‍යතා සපයන්නන් (පරිශ්‍රයේ)

පරිශීලක ෆෙඩරේෂන් සේවාවන් හරහා පරිශීලකයින් සත්‍යාපනය කිරීමේ හැකියාව.

ක්ෂුද්ර සේවා ගෘහ නිර්මාණ ශිල්පය පිළිබඳ SSO. අපි Keycloak භාවිතා කරනවා. #1 කොටස

Pass-through Authentication ද භාවිතා කළ හැක - පරිශීලකයන් Kerberos (LDAP හෝ AD) සමඟින් වැඩපොළවල් වලට එරෙහිව සත්‍යාපනය කරන්නේ නම්, නැවත ඔවුන්ගේ පරිශීලක නාමය සහ මුරපදය ඇතුළත් නොකර Keycloak වෙත ස්වයංක්‍රීයව සත්‍යාපනය කළ හැක.

පරිශීලකයින්ගේ සත්‍යාපනය සහ වැඩිදුර අවසරය සඳහා, සංවර්ධන පරිසරයන් සඳහා වඩාත් අදාළ වන සම්බන්ධතා DBMS භාවිතා කළ හැකිය, මන්ද එය ව්‍යාපෘතිවල මුල් අවධියේදී දිගු සැකසුම් සහ ඒකාබද්ධ කිරීම් ඇතුළත් නොවන බැවිනි. පෙරනිමියෙන්, Keycloak සැකසුම් සහ පරිශීලක දත්ත ගබඩා කිරීමට ගොඩනඟන ලද DBMS භාවිතා කරයි.

සහාය දක්වන DBMS ලැයිස්තුව පුළුල් වන අතර ඒවාට ඇතුළත් වන්නේ: MS SQL, Oracle, PostgreSQL, MariaDB, Oracle සහ වෙනත් ය. MariaDB 12 සඳහා දැනට වඩාත්ම පරීක්‍ෂා කර ඇත්තේ Oracle 1C Release3.12 RAC සහ Galera 10.1.19 ක්ලස්ටර් ය.

අනන්යතා සපයන්නන් - සමාජ පිවිසුම

සමාජ ජාල වලින් පිවිසුමක් භාවිතා කළ හැකිය. පරිශීලකයන් සත්‍යාපනය කිරීමේ හැකියාව සක්‍රිය කිරීමට, Keycloack පරිපාලක කොන්සෝලය භාවිතා කරන්න. යෙදුම් කේතයේ වෙනස්කම් අවශ්‍ය නොවන අතර මෙම ක්‍රියාකාරිත්වය කොටුවෙන් පිටත ලබා ගත හැකි අතර ව්‍යාපෘතියේ ඕනෑම අදියරකදී සක්‍රිය කළ හැක.

ක්ෂුද්ර සේවා ගෘහ නිර්මාණ ශිල්පය පිළිබඳ SSO. අපි Keycloak භාවිතා කරනවා. #1 කොටස

පරිශීලක සත්‍යාපනය සඳහා OpenID/SAML අනන්‍යතා සපයන්නන් භාවිතා කළ හැක.

Keycloak හි OAuth2 භාවිතා කරන සාමාන්‍ය අවසර අවස්ථා

අවසර කේත ප්රවාහය - සේවාදායක පැත්තේ යෙදුම් සමඟ භාවිතා වේ. යෙදුමේ මූලාශ්‍ර කේතය සහ සේවාදායක දත්ත පිටස්තරයින්ට ලබා ගත නොහැකි සේවාදායක යෙදුම් සඳහා එය හොඳින් ගැලපෙන බැවින් අවසර දීමේ වඩාත් පොදු වර්ගයකි. මෙම නඩුවේ ක්රියාවලිය නැවත යොමු කිරීම මත පදනම් වේ. යෙදුමට වෙබ් බ්‍රවුසරයක් වැනි පරිශීලක නියෝජිතයෙකු (පරිශීලක නියෝජිතයෙකු) සමඟ සන්නිවේදනය කිරීමට හැකි විය යුතුය - පරිශීලක නියෝජිතයා හරහා හරවා යවන ලද API අවසර කේත ලබා ගැනීමට.

ව්යංග ප්රවාහය - ජංගම හෝ වෙබ් යෙදුම් (පරිශීලකයාගේ උපාංගය මත ධාවනය වන යෙදුම්) භාවිතා කරයි.

සේවාදායකයාගේ රහස්‍යභාවය සහතික කළ නොහැකි ජංගම සහ වෙබ් යෙදුම් මගින් ව්‍යංග අවසර අවසර වර්ගය භාවිත කෙරේ. ව්‍යංග අවසර වර්ගය පරිශීලක නියෝජිත යළි-යොමුවීම් ද භාවිතා කරයි, එමඟින් ප්‍රවේශ ටෝකනය යෙදුමේ වැඩිදුර භාවිතය සඳහා පරිශීලක නියෝජිතයා වෙත යවනු ලැබේ. මෙමඟින් ටෝකනය පරිශීලකයාට සහ පරිශීලකයාගේ උපාංගයේ ඇති අනෙකුත් යෙදුම්වලට ලබා ගත හැක. මෙම ආකාරයේ අවසර දීමේ අවසරය යෙදුමේ අනන්‍යතාවය සත්‍යාපනය නොකරන අතර, ක්‍රියාවලියම යළි-යොමුවීම් URL එකක් මත රඳා පවතී (පෙර සේවාව සමඟ ලියාපදිංචි වී ඇත).

ව්‍යංග ප්‍රවාහය ප්‍රවේශ ටෝකන නැවුම් ටෝකන සඳහා සහය නොදක්වයි.

සේවාලාභී අක්තපත්‍ර ප්‍රවාහය - යෙදුම API වෙත ප්‍රවේශ වන විට භාවිතා වේ. ක්ෂණික පරිශීලක අන්තර්ක්‍රියාකාරිත්වයකින් තොරව පසුබිමේ සිදු කළ යුතු සේවාදායකයෙන් සේවාදායකයට අන්තර්ක්‍රියා සඳහා මෙම ආකාරයේ අවසර අවසරය සාමාන්‍යයෙන් භාවිතා වේ. සේවාලාභී අක්තපත්‍ර ප්‍රවාහය වෙනත් වෙබ් සේවාවක් ඇමතීමේ දී සත්‍යාපනය කිරීම සඳහා පරිශීලකයෙකු ලෙස පෙනී සිටීම වෙනුවට වෙබ් සේවාවකට (රහස්‍ය සේවාලාභියා) ස්වකීය අක්තපත්‍ර භාවිතා කිරීමට ඉඩ සලසයි. ඉහළ මට්ටමේ ආරක්ෂාවක් සඳහා, ඇමතුම් සේවාවට සහතිකයක් (හවුල් රහසක් වෙනුවට) අක්තපත්‍රයක් ලෙස භාවිතා කළ හැකිය.

OAuth2 පිරිවිතර විස්තර කර ඇත
ආර්එෆ්සී -6749
ආර්එෆ්සී -8252
ආර්එෆ්සී -6819

JWT ටෝකනය සහ එහි ප්රතිලාභ

JWT (JSON වෙබ් ටෝකනය) විවෘත ප්‍රමිතියකි (https://tools.ietf.org/html/rfc7519) එය JSON වස්තුවක් ලෙස පාර්ශ්ව අතර තොරතුරු ආරක්ෂිතව මාරු කිරීමට සංයුක්ත සහ ස්වයං අන්තර්ගත ක්‍රමයක් නිර්වචනය කරයි.

සම්මතයට අනුව, ටෝකනය පදනම්-64 ආකෘතියේ කොටස් තුනකින් සමන්විත වන අතර එය තිත් වලින් වෙන් කර ඇත. පළමු කොටස ශීර්ෂකය ලෙස හැඳින්වේ, එහි සංකේතයේ වර්ගය සහ ඩිජිටල් අත්සනක් ලබා ගැනීම සඳහා හැෂ් ඇල්ගොරිතමයේ නම අඩංගු වේ. දෙවන කොටස මූලික තොරතුරු (පරිශීලක, ගුණාංග, ආදිය) ගබඩා කරයි. තුන්වන කොටස ඩිජිටල් අත්සනයි.

. .
කිසිවිටෙක ඔබගේ DB හි ටෝකනයක් ගබඩා නොකරන්න. වලංගු ටෝකනයක් මුරපදයකට සමාන වන බැවින්, ටෝකනය ගබඩා කිරීම මුරපදය පැහැදිලි පාඨයක ගබඩා කිරීම වැනිය.
ප්රවේශ ටෝකනය ආරක්ෂිත සේවාදායක සම්පත් වෙත එහි හිමිකරුට ප්‍රවේශය ලබා දෙන සංකේතයකි. එය සාමාන්‍යයෙන් කෙටි ආයු කාලයක් ඇති අතර ටෝකනය ඉල්ලා සිටින පාර්ශ්වයේ IP ලිපිනය වැනි අමතර තොරතුරු රැගෙන යා හැක.

ටෝකනය නැවුම් කරන්න සේවාලාභීන්ට ඔවුන්ගේ ජීවිත කාලය අවසන් වූ පසු නව ප්‍රවේශ ටෝකන ඉල්ලා සිටීමට ඉඩ සලසන ටෝකනයකි. මෙම ටෝකන සාමාන්යයෙන් දිගු කාලයක් සඳහා නිකුත් කරනු ලැබේ.

ක්ෂුද්‍ර සේවා ගෘහ නිර්මාණ ශිල්පයේ භාවිතා කිරීමේ ප්‍රධාන වාසි:

  • එක් වරක් සත්‍යාපනය කිරීම හරහා විවිධ යෙදුම් සහ සේවාවන් වෙත ප්‍රවේශ වීමේ හැකියාව.
  • පරිශීලක පැතිකඩෙහි අවශ්‍ය ගුණාංග ගණනාවක් නොමැති විට, ස්වයංක්‍රීය සහ පියාසර කිරීම ඇතුළුව ගෙවීමට එකතු කළ හැකි දත්ත සමඟ පොහොසත් කිරීමට හැකි වේ.
  • සක්‍රිය සැසි පිළිබඳ තොරතුරු ගබඩා කිරීමට අවශ්‍ය නැත, සේවාදායක යෙදුමට අත්සන සත්‍යාපනය කිරීමට පමණක් අවශ්‍ය වේ.
  • ගෙවීමේ අමතර ගුණාංග හරහා වඩාත් නම්‍යශීලී ප්‍රවේශ පාලනය.
  • ශීර්ෂකය සහ ගෙවීම සඳහා සංකේත අත්සනක් භාවිතා කිරීම සමස්තයක් ලෙස විසඳුමේ ආරක්ෂාව වැඩි කරයි.

JWT ටෝකනය - සංයුතිය

ශීර්ෂකය - පෙරනිමියෙන්, ශීර්ෂයෙහි ටෝකන වර්ගය සහ සංකේතනය සඳහා භාවිතා කරන ඇල්ගොරිතම පමණක් අඩංගු වේ.

ටෝකනයේ වර්ගය "typ" යතුරේ ගබඩා කර ඇත. JWT හි 'වර්ගය' යතුර නොසලකා හරිනු ලැබේ. "typ" යතුර තිබේ නම්, මෙම වස්තුව JSON වෙබ් ටෝකනයක් බව දැක්වීමට එහි අගය JWT විය යුතුය.

දෙවන යතුර "alg" ටෝකනය සංකේතනය කිරීමට භාවිතා කරන ඇල්ගොරිතම නිර්වචනය කරයි. එය පෙරනිමියෙන් HS256 ලෙස සැකසිය යුතුය. ශීර්ෂකය Base64 හි කේතනය කර ඇත.

{ "alg": "HS256", "type": "JWT"}
ගෙවීම (අන්තර්ගතය) - පරීක්ෂා කිරීමට අවශ්‍ය ඕනෑම තොරතුරක් ගෙවීමේ භාරය ගබඩා කරයි. ගෙවීමේ සෑම යතුරක්ම "හිමිකම්" ලෙස හැඳින්වේ. උදාහරණයක් ලෙස, ඔබට යෙදුම ඇතුළත් කළ හැක්කේ ආරාධනයකින් පමණි (වසා දැමූ ප්‍රවර්ධන). අපි කෙනෙකුට සහභාගි වීමට ආරාධනා කිරීමට අවශ්‍ය වූ විට, අපි ඔවුන්ට ආරාධනා ලිපියක් යවමු. විද්‍යුත් තැපැල් ලිපිනය ආරාධනය පිළිගන්නා පුද්ගලයාට අයත් දැයි පරීක්ෂා කිරීම වැදගත් වේ, එබැවින් අපි මෙම ලිපිනය ගෙවීමට ඇතුළත් කරන්නෙමු, මේ සඳහා අපි එය "ඊමේල්" යතුරේ ගබඩා කරමු.

{ "විද්යුත් තැපෑල": "[විද්‍යුත් ආරක්‍ෂිත]"}

ගෙවීමේ යතුරු අත්තනෝමතික විය හැක. කෙසේ වෙතත්, වෙන් කර ඇති කිහිපයක් තිබේ:

  • iss (නිකුත් කරන්නා) - ටෝකනය යවන යෙදුම හඳුනා ගනී.
  • උප (විෂය) - ටෝකනයේ විෂය නිර්වචනය කරයි.
  • aud (ප්‍රේක්ෂකයින්) යනු මෙම ටෝකනය ලබන්නන්ගේ ලැයිස්තුවක් වන සිද්ධි සංවේදී නූල් හෝ URI අරාවකි. ලබා ගන්නා පැත්තට ලබා දී ඇති යතුර සමඟ JWT ලැබුණු විට, එය ලබන්නන් තුළ තමාගේ පැවැත්ම පරීක්ෂා කළ යුතුය - එසේ නොමැතිනම් ටෝකනය නොසලකා හරින්න.
  • exp (Expiration Time) - ටෝකනය කල් ඉකුත් වන විට දක්වයි. JWT ප්‍රමිතියට එහි සියලුම ක්‍රියාත්මක කිරීම් කල් ඉකුත් වූ ටෝකන ප්‍රතික්ෂේප කිරීමට අවශ්‍ය වේ. Exp යතුර unix ආකෘතියෙන් කාල මුද්‍රාවක් විය යුතුය.
  • nbf (පෙර නොවේ) යනු ටෝකනය වලංගු වන මොහොත තීරණය කරන unix ආකෘතියේ වේලාවකි.
  • iat (නිකුත් කර ඇත) - මෙම යතුර ටෝකනය නිකුත් කළ කාලය නියෝජනය කරන අතර JWT හි වයස තීරණය කිරීමට භාවිතා කළ හැක. iat යතුර unix ආකෘතියේ කාල මුද්‍රාවක් විය යුතුය.
  • Jti (JWT ID) — මෙම ටෝකනයේ අනන්‍ය හඳුනාගැනීම, සිද්ධි-සංවේදී නිර්වචනය කරන තන්තුවකි.

ගෙවීම් භාරය සංකේතාත්මක ආකාරයෙන් සම්ප්‍රේෂණය නොවන බව තේරුම් ගැනීම වැදගත්ය (ටෝකන කූඩු කළ හැකි අතර පසුව සංකේතාත්මක දත්ත සම්ප්‍රේෂණය කළ හැකි වුවද). එමනිසා, එය කිසිදු රහස් තොරතුරු ගබඩා කළ නොහැක. ශීර්ෂකය මෙන්, ගෙවීමේ බර Base64 කේතනය කර ඇත.
අත්සන - අපට මාතෘකාවක් සහ ගෙවීමක් ඇති විට, අපට අත්සන ගණනය කළ හැකිය.

Base64-කේතනය කර ඇත: ශීර්ෂකය සහ ගෙවීම් භාර ගනු ලැබේ, ඒවා තිතක් හරහා තන්තුවකට ඒකාබද්ධ කෙරේ. එවිට මෙම තන්තුව සහ රහස් යතුර ශීර්ෂයේ ("alg" යතුර) දක්වා ඇති සංකේතාංකන ඇල්ගොරිතමයට ආදානය වේ. යතුර ඕනෑම නූලක් විය හැකිය. එය ලබා ගැනීමට වැඩි කාලයක් ගත වන බැවින් දිගු නූල් වඩාත් කැමති වනු ඇත.

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

Keycloak Failover Cluster Architecture ගොඩනැගීම

සියලුම ව්‍යාපෘති සඳහා තනි පොකුරක් භාවිතා කරන විට, SSO විසඳුමක් සඳහා වැඩි අවශ්‍යතා ඇත. ව්‍යාපෘති සංඛ්‍යාව කුඩා වන විට, සියලුම ව්‍යාපෘති සඳහා මෙම අවශ්‍යතා එතරම් කැපී පෙනෙන්නේ නැත, කෙසේ වෙතත්, පරිශීලකයින් සංඛ්‍යාව සහ ඒකාබද්ධ කිරීම් වැඩි වීමත් සමඟ, ලබා ගත හැකි සහ කාර්ය සාධනය සඳහා වන අවශ්‍යතා වැඩි වේ.

තනි SSO අසාර්ථක වීමේ අවදානම වැඩි කිරීම විසඳුම් ගෘහ නිර්මාණ ශිල්පය සහ අතිරික්ත සංරචක සඳහා භාවිතා කරන ක්‍රම සඳහා අවශ්‍යතා වැඩි කරන අතර ඉතා දැඩි SLA බවට පත් කරයි. මේ සම්බන්ධයෙන්, බොහෝ විට සංවර්ධන හෝ විසඳුම් ක්‍රියාත්මක කිරීමේ මුල් අවධියේදී, ව්‍යාපෘතිවලට ඔවුන්ගේම වැරදි නොඉවසන යටිතල පහසුකම් ඇත. සංවර්ධනයේ ප්‍රගතියත් සමඟ, සංවර්ධනය සහ පරිමාණය සඳහා අවස්ථා තැබීම අවශ්‍ය වේ. බහාලුම් අථත්‍යකරණය හෝ දෙමුහුන් ප්‍රවේශයක් භාවිතයෙන් අසාර්ථක පොකුරක් තැනීම වඩාත් නම්‍යශීලී වේ.

සක්‍රීය/ක්‍රියාකාරී සහ සක්‍රිය/නිෂ්ක්‍රීය පොකුරු මාදිලිවල වැඩ කිරීමට, සම්බන්ධතා දත්ත ගබඩාවක දත්ත අනුකූලතාව සහතික කිරීම අවශ්‍ය වේ - දත්ත සමුදා නෝඩ් දෙකම විවිධ භූ-බෙදාහැරි දත්ත මධ්‍යස්ථාන අතර සමමුහුර්තව ප්‍රතිනිර්මාණය කළ යුතුය.

දෝෂ සහිත ස්ථාපනයක සරලම උදාහරණය.

ක්ෂුද්ර සේවා ගෘහ නිර්මාණ ශිල්පය පිළිබඳ SSO. අපි Keycloak භාවිතා කරනවා. #1 කොටස

තනි පොකුරක් භාවිතා කිරීමේ වාසි මොනවාද:

  • ඉහළ ලබා ගැනීමේ හැකියාව සහ කාර්ය සාධනය.
  • මෙහෙයුම් මාතයන් සඳහා සහාය: ක්රියාකාරී / ක්රියාකාරී, ක්රියාකාරී / නිෂ්ක්රීය.
  • ගතිකව පරිමාණය කිරීමේ හැකියාව - බහාලුම් අථත්යකරණය භාවිතා කරන විට.
  • මධ්යගත කළමණාකරණය සහ අධීක්ෂණය කිරීමේ හැකියාව.
  • ව්‍යාපෘතිවල පරිශීලකයින් හඳුනාගැනීම/සත්‍යාපනය/අවසර දීම සඳහා ඒකාබද්ධ ප්‍රවේශය.
  • පරිශීලක සහභාගීත්වයෙන් තොරව විවිධ ව්යාපෘති අතර වඩාත් විනිවිද පෙනෙන අන්තර්ක්රියා.
  • විවිධ ව්‍යාපෘතිවල JWT ටෝකනය නැවත භාවිත කිරීමේ හැකියාව.
  • විශ්වාසයේ තනි කරුණක්.
  • ක්ෂුද්‍ර සේවා/බහාල අථත්‍යකරණය භාවිතයෙන් ව්‍යාපෘති වේගයෙන් දියත් කිරීම (අමතර සංරචක එසවීම සහ වින්‍යාස කිරීම අවශ්‍ය නොවේ).
  • වෙළෙන්දාගෙන් වාණිජ සහාය මිලදී ගත හැකිය.

පොකුරක් සැලසුම් කිරීමේදී සොයා බැලිය යුතු දේ

DBMS

Keycloak ගබඩා කිරීම සඳහා දත්ත සමුදා කළමනාකරණ පද්ධතියක් භාවිතා කරයි: රාජධානි, සේවාලාභීන්, පරිශීලකයන්, ආදිය.
පුළුල් පරාසයක DBMS සඳහා සහය දක්වයි: MS SQL, Oracle, MySQL, PostgreSQL. Keycloak එහිම ගොඩනඟන ලද සම්බන්ධතා දත්ත ගබඩාවක් සමඟ පැමිණේ. සංවර්ධන පරිසරයන් වැනි පටවනු නොලබන පරිසරයන් සඳහා භාවිතා කිරීම නිර්දේශ කෙරේ.

සක්‍රීය/ක්‍රියාකාරී සහ සක්‍රිය/නිෂ්ක්‍රීය පොකුරු මාදිලිවල වැඩ කිරීමට, සම්බන්ධතා දත්ත ගබඩාවක දත්ත අනුකූලතාව අවශ්‍ය වන අතර දත්ත සමුදා පොකුරු නෝඩ් දෙකම දත්ත මධ්‍යස්ථාන අතර සමමුහුර්තව ප්‍රතිනිර්මාණය වේ.

බෙදා හරින ලද හැඹිලිය (Infinspan)

පොකුර නිවැරදිව ක්‍රියා කිරීමට, JBoss Data Grid භාවිතයෙන් පහත ආකාරයේ හැඹිලිවල අතිරේක සමමුහුර්ත කිරීම අවශ්‍ය වේ:

සත්‍යාපන සැසි - නිශ්චිත පරිශීලකයෙකු සත්‍යාපනය කිරීමේදී දත්ත සුරැකීමට භාවිතා කරයි. මෙම හැඹිලියෙන් ලැබෙන ඉල්ලීම්වලට සාමාන්‍යයෙන් ඇතුළත් වන්නේ බ්‍රවුසරය සහ Keycloak සේවාදායකය මිස යෙදුම නොවේ.

පරිශීලකයාට අසමමුහුර්තව (ඊමේල් හරහා) ක්‍රියාවක් තහවුරු කිරීමට අවශ්‍ය අවස්ථා සඳහා ක්‍රියා ටෝකන භාවිතා වේ. උදාහරණයක් ලෙස, අමතක වූ මුරපද ප්‍රවාහයක් අතරතුර, දැනටමත් භාවිතා කර ඇති ආශ්‍රිත ක්‍රියා ටෝකන පිළිබඳ පාර-දත්ත නිරීක්ෂණය කිරීමට actionTokens Infinispan හැඹිලිය භාවිතා කරයි, එබැවින් එය නැවත භාවිතා කළ නොහැක.

ස්ථීර දත්ත හැඹිලිගත කිරීම සහ අවලංගු කිරීම - දත්ත සමුදායට අනවශ්‍ය විමසුම් වළක්වා ගැනීම සඳහා ස්ථීර දත්ත හැඹිලි කිරීමට භාවිතා කරයි. ඕනෑම Keycloak සේවාදායකයක් දත්ත යාවත්කාලීන කරන විට, සියලුම දත්ත මධ්‍යස්ථානවල ඇති අනෙකුත් සියලුම Keycloak සේවාදායකයන් ඒ ගැන දැනගත යුතුය.

වැඩ - පොකුරු නෝඩ් සහ දත්ත මධ්‍යස්ථාන අතර වලංගු නොවන පණිවිඩ යැවීමට පමණක් භාවිතා කරයි.

පරිශීලක සැසි - පරිශීලකයාගේ බ්‍රව්සර් සැසියේ කාලසීමාව සඳහා වලංගු වන පරිශීලක සැසි පිළිබඳ දත්ත ගබඩා කිරීමට භාවිතා කරයි. හැඹිලිය අවසාන පරිශීලකයාගෙන් සහ යෙදුමෙන් HTTP ඉල්ලීම් ක්‍රියා කළ යුතුය.

Brute force protection - අසාර්ථක පිවිසුම් පිළිබඳ දත්ත නිරීක්ෂණය කිරීමට භාවිතා කරයි.

පැටවීම තුලනය

පැටවුම් සමතුලිතකය යතුරු සළුවට තනි පිවිසුම් ලක්ෂ්‍යය වන අතර ඇලෙන සුළු සැසි සඳහා සහාය විය යුතුය.

යෙදුම් සේවාදායකයන්

ඒවා එකිනෙක සංරචකවල අන්තර්ක්‍රියා පාලනය කිරීමට භාවිතා කරන අතර පවතින ස්වයංක්‍රීයකරණ මෙවලම් සහ යටිතල පහසුකම් ස්වයංක්‍රීයකරණ මෙවලම්වල ගතික පරිමාණය භාවිතයෙන් අථත්‍යකරණය හෝ බහාලුම් කළ හැක. OpenShift, Kubernates, Rancher හි වඩාත් පොදු යෙදවීමේ අවස්ථා.

මෙය පළමු කොටස අවසන් කරයි - න්යායික එක. මීළඟ ලිපි මාලාවේදී, විවිධ අනන්‍යතා සපයන්නන් සමඟ ඒකාබද්ධ වීමේ උදාහරණ සහ සැකසුම් පිළිබඳ උදාහරණ විශ්ලේෂණය කරනු ඇත.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න