မိုက်ခရိုဝန်ဆောင်မှုဗိသုကာဆိုင်ရာ SSO ကျွန်ုပ်တို့သည် Keycloak ကိုအသုံးပြုသည်။ အပိုင်း 1

မည်သည့်ကုမ္ပဏီကြီးတွင်မဆို X5 Retail Group သည် ခြွင်းချက်မရှိ၊ ဖွံ့ဖြိုးတိုးတက်လာသည်နှင့်အမျှ သုံးစွဲသူခွင့်ပြုချက်လိုအပ်သော ပရောဂျက်အရေအတွက် တိုးလာပါသည်။ အချိန်ကြာလာသည်နှင့်အမျှ သုံးစွဲသူများသည် အပလီကေးရှင်းတစ်ခုမှ အခြားတစ်ခုသို့ ချောမွေ့စွာကူးပြောင်းရန် လိုအပ်ပြီး Single-Sing-On (SSO) ဆာဗာတစ်ခုတည်းကို အသုံးပြုရန် လိုအပ်ပါသည်။ သို့သော် AD ကဲ့သို့သော အထောက်အထားပံ့ပိုးပေးသူများ သို့မဟုတ် အပိုဂုဏ်သတ္တိများမရှိသော အခြားသူများကို ပရောဂျက်အမျိုးမျိုးတွင် အသုံးပြုပြီးသောအခါတွင်ကော။ "သက်သေခံပွဲစားများ" ဟုခေါ်သောစနစ်အမျိုးအစားတစ်ခုသည်ကယ်တင်ရန်ရောက်ရှိလာလိမ့်မည်။ အသုံးအများဆုံးမှာ Keycloak၊ Gravitee Access စီမံခန့်ခွဲမှုစသည်ဖြင့် ၎င်း၏ ကိုယ်စားလှယ်များသည် မကြာခဏဆိုသလို၊ အသုံးပြုမှုကိစ္စများတွင် မတူညီနိုင်သည်- စက်အပြန်အလှန်ဆက်ဆံမှု၊ အသုံးပြုသူပါဝင်မှုစသည်ဖြင့် ဖြေရှင်းချက်သည် လိုအပ်ချက်များအားလုံးကို တစ်ခုတည်းတွင် ပေါင်းစပ်နိုင်သော လိုက်လျောညီထွေရှိပြီး အရွယ်အစားအလိုက် လုပ်ဆောင်နိုင်စွမ်းကို ပံ့ပိုးပေးရမည်ဖြစ်သည်။ ထိုကဲ့သို့သော ဖြေရှင်းနည်းများသည် ယခုကျွန်ုပ်တို့၏ကုမ္ပဏီတွင် ညွှန်ပြသည့် ပွဲစားတစ်ဦးရှိသည် - Keycloak။

မိုက်ခရိုဝန်ဆောင်မှုဗိသုကာဆိုင်ရာ SSO ကျွန်ုပ်တို့သည် Keycloak ကိုအသုံးပြုသည်။ အပိုင်း 1

Keycloak သည် RedHat မှ ထိန်းသိမ်းထားသော open source အထောက်အထားနှင့် access control ထုတ်ကုန်တစ်ခုဖြစ်သည်။ ၎င်းသည် SSO - RH-SSO ကို အသုံးပြုထားသော ကုမ္ပဏီ၏ ထုတ်ကုန်များအတွက် အခြေခံဖြစ်သည်။

အခြေခံသဘောတရား

ဖြေရှင်းနည်းများနှင့် ချဉ်းကပ်မှုများကို သင်မစတင်မီ၊ လုပ်ငန်းစဉ်များ၏ စည်းကမ်းသတ်မှတ်ချက်များနှင့် လုပ်ငန်းစဉ်များကို သင်ဆုံးဖြတ်သင့်သည်-

မိုက်ခရိုဝန်ဆောင်မှုဗိသုကာဆိုင်ရာ SSO ကျွန်ုပ်တို့သည် Keycloak ကိုအသုံးပြုသည်။ အပိုင်း 1

ဝင်ခွင့်လက်မှတ် ဘာသာရပ်တစ်ခုကို သူ၏သတ်မှတ်သူမှ အသိအမှတ်ပြုခြင်းဆိုင်ရာ လုပ်ထုံးလုပ်နည်းတစ်ခု (တစ်နည်းအားဖြင့်၊ ၎င်းသည် အမည်၊ အကောင့် သို့မဟုတ် နံပါတ်၏ အဓိပ္ပါယ်ဖွင့်ဆိုချက်ဖြစ်သည်)။

စစ်မှန်ကြောင်းအထောက်အထားပြသခြင်း - ဤသည်မှာ စစ်မှန်ကြောင်းအထောက်အထားပြခြင်းလုပ်ငန်းစဉ်တစ်ခုဖြစ်သည် (အသုံးပြုသူကို စကားဝှက်ဖြင့်စစ်ဆေးသည်၊ စာလုံးကို အီလက်ထရွန်းနစ်လက်မှတ်ဖြင့်စစ်ဆေးသည် စသည်ဖြင့်)

အခွင့်အာဏာပေးခြင်း - ဤသည်မှာ အရင်းအမြစ်တစ်ခုသို့ ဝင်ရောက်ခွင့် (ဥပမာ၊ အီးမေးလ်သို့) ဖြစ်သည်။

အထောက်အထားပွဲစား သော့ပိတ်

သော့ချိတ် microservice ဗိသုကာပုံစံများကို အသုံးပြုနိုင်သည့် IS တွင် အသုံးပြုရန်အတွက် ဒီဇိုင်းထုတ်ထားသည့် open source အထောက်အထားနှင့် ဝင်ရောက်နိုင်မှု စီမံခန့်ခွဲမှုဖြေရှင်းချက်ဖြစ်သည်။

Keycloak သည် တစ်ခုတည်းသော အကောင့်ဖွင့်ခြင်း (SSO)၊ ပွဲစားအထောက်အထားနှင့် လူမှုရေးဆိုင်ရာ အကောင့်ဝင်မှု၊ အသုံးပြုသူအသင်းချုပ်၊ ကလိုင်းယင့်အဒက်တာများ၊ စီမံခန့်ခွဲသူကွန်ဆိုးလ်နှင့် အကောင့်စီမံခန့်ခွဲမှု ကွန်ဆိုးလ်ကဲ့သို့သော အင်္ဂါရပ်များကို ပေးသည်။

Keycloak မှပံ့ပိုးထားသော အခြေခံလုပ်ဆောင်ချက်

  • ဘရောက်ဆာ အပလီကေးရှင်းများအတွက် Single-Sign On နှင့် Single-Sign Out။
  • OpenID/OAuth 2.0/SAML အတွက် ပံ့ပိုးမှု။
  • Identity Brokering - ပြင်ပ OpenID Connect သို့မဟုတ် SAML အထောက်အထားပံ့ပိုးပေးသူများကို အသုံးပြု၍ စစ်မှန်ကြောင်းအထောက်အထားပြခြင်း။
  • လူမှုအကောင့်ဝင်ရောက်ခြင်း - အသုံးပြုသူသတ်မှတ်ခြင်းအတွက် Google၊ GitHub၊ Facebook၊ Twitter ပံ့ပိုးမှု။
  • အသုံးပြုသူအသင်းချုပ် - LDAP နှင့် Active Directory ဆာဗာများနှင့် အခြားသော အထောက်အထားပံ့ပိုးပေးသူများထံမှ သုံးစွဲသူများကို ထပ်တူပြုခြင်း။
  • Kerberos တံတား - အလိုအလျောက်အသုံးပြုသူစစ်မှန်ကြောင်းအထောက်အထားအတွက် Kerberos ဆာဗာကိုအသုံးပြုခြင်း။
  • စီမံခန့်ခွဲသူကွန်ဆိုးလ် - ဝဘ်မှတစ်ဆင့် ဆက်တင်များနှင့် ဖြေရှင်းချက်ရွေးချယ်မှုများ၏ တစ်စုတစ်စည်းတည်းစီမံခန့်ခွဲမှုအတွက်။
  • အကောင့်စီမံခန့်ခွဲမှု ကွန်ဆိုးလ် - အသုံးပြုသူပရိုဖိုင်ကို ကိုယ်တိုင်စီမံခန့်ခွဲရန်အတွက်။
  • ကုမ္ပဏီ၏ ကော်ပိုရိတ်အထောက်အထားများအပေါ် အခြေခံ၍ ဖြေရှင်းချက်ကို စိတ်ကြိုက်ပြုလုပ်ခြင်း။
  • 2FA စစ်မှန်ကြောင်းအထောက်အထားပြခြင်း - Google Authenticator သို့မဟုတ် FreeOTP ကို ​​အသုံးပြု၍ TOTP/HOTP ပံ့ပိုးမှု။
  • Login Flows - အသုံးပြုသူကိုယ်တိုင် မှတ်ပုံတင်ခြင်း၊ စကားဝှက် ပြန်လည်ရယူခြင်းနှင့် ပြန်လည်သတ်မှတ်ခြင်းနှင့် အခြားအရာများ ဖြစ်နိုင်သည်။
  • Session Management - စီမံခန့်ခွဲသူများသည် အသုံးပြုသူအစည်းအဝေးများကို အချက်တစ်ခုတည်းမှ စီမံခန့်ခွဲနိုင်သည်။
  • Token Mappers - အသုံးပြုသူ၏အရည်အချင်းများ၊ အခန်းကဏ္ဍများနှင့် အခြားလိုအပ်သော အရည်အချင်းများကို တိုကင်များတွင် ပေါင်းစပ်ထားသည်။
  • နယ်ပယ်၊ အပလီကေးရှင်းနှင့် သုံးစွဲသူများတစ်လျှောက် လိုက်လျောညီထွေရှိသော မူဝါဒစီမံခန့်ခွဲမှု။
  • CORS ပံ့ပိုးမှု - သုံးစွဲသူ အဒက်တာများတွင် တပ်ဆင်ထားသော CORS ပံ့ပိုးမှုရှိသည်။
  • ဝန်ဆောင်မှုပေးသူ အင်တာဖေ့စ်များ (SPI) - ဆာဗာ၏ အမျိုးမျိုးသော ရှုထောင့်များကို စိတ်ကြိုက်ပြင်ဆင်ခွင့်ပြုသည့် SPI အများအပြား- အထောက်အထားစိစစ်ခြင်း စီးဆင်းမှုများ၊ အထောက်အထား ပံ့ပိုးပေးသူများ၊ ပရိုတိုကော မြေပုံထုတ်ခြင်းနှင့် အခြားအရာများ။
  • JavaScript အပလီကေးရှင်းများအတွက် ဖောက်သည်အဒက်တာများ၊ WildFly၊ JBoss EAP၊ Fuse၊ Tomcat၊ Jetty၊ Spring။
  • OpenID Connect Relying Party စာကြည့်တိုက် သို့မဟုတ် SAML 2.0 ဝန်ဆောင်မှုပေးသည့်စာကြည့်တိုက်ကို ပံ့ပိုးပေးသည့် အမျိုးမျိုးသော အပလီကေးရှင်းများနှင့် အလုပ်လုပ်ရန်အတွက် ပံ့ပိုးမှု။
  • ပလပ်အင်များကို အသုံးပြု၍ ချဲ့နိုင်သည်။

CI/CD လုပ်ငန်းစဉ်များ၊ Keycloak ရှိ စီမံခန့်ခွဲမှုလုပ်ငန်းစဉ်များ၏ အလိုအလျောက်စနစ်အတွက် REST API/JAVA API ကို အသုံးပြုနိုင်ပါသည်။ စာရွက်စာတမ်းများကို အီလက်ထရွန်နစ်ဖြင့် ရနိုင်သည်-

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

လုပ်ငန်း အထောက်အထား ပံ့ပိုးပေးသူများ (ပရဝုဏ်အတွင်း)

User Federation ဝန်ဆောင်မှုများမှတစ်ဆင့် သုံးစွဲသူများကို စစ်မှန်ကြောင်းအထောက်အထားပြနိုင်မှု။

မိုက်ခရိုဝန်ဆောင်မှုဗိသုကာဆိုင်ရာ SSO ကျွန်ုပ်တို့သည် Keycloak ကိုအသုံးပြုသည်။ အပိုင်း 1

Pass-through authentication ကိုလည်းအသုံးပြုနိုင်သည် - အကယ်၍ အသုံးပြုသူများသည် Kerberos (LDAP သို့မဟုတ် AD) ဖြင့် workstations များကို စစ်မှန်ကြောင်းအထောက်အထားပြပါက၊ ၎င်းတို့၏အသုံးပြုသူအမည်နှင့် စကားဝှက်ကို ထပ်မံထည့်သွင်းစရာမလိုဘဲ Keycloak သို့ အလိုအလျောက်စစ်မှန်ကြောင်းပြသနိုင်မည်ဖြစ်သည်။

အသုံးပြုသူများအား စစ်မှန်ကြောင်းအထောက်အထားပြခြင်းနှင့် နောက်ထပ်ခွင့်ပြုချက်များအတွက်၊ ပရောဂျက်များ၏အစောပိုင်းအဆင့်များတွင် ရှည်လျားသောဆက်တင်များနှင့် ပေါင်းစည်းမှုများမပါဝင်သောကြောင့် ဖွံ့ဖြိုးတိုးတက်မှုပတ်ဝန်းကျင်အတွက် အသက်ဆိုင်ဆုံးဖြစ်သည့် ဆက်စပ် DBMS ကို အသုံးပြုနိုင်သည်။ ပုံမှန်အားဖြင့်၊ Keycloak သည် ဆက်တင်များနှင့် အသုံးပြုသူဒေတာကို သိမ်းဆည်းရန် Built-in DBMS ကို အသုံးပြုသည်။

ပံ့ပိုးပေးထားသော DBMS စာရင်းသည် ကျယ်ပြန့်ပြီး MS SQL၊ Oracle၊ PostgreSQL၊ MariaDB၊ Oracle နှင့် အခြားအရာများ ပါဝင်ပါသည်။ ယခုအချိန်အထိ စမ်းသပ်မှုအများဆုံးမှာ Oracle 12C Release1 RAC နှင့် MariaDB 3.12 အတွက် Galera 10.1.19 အစုအဝေးဖြစ်သည်။

အထောက်အထားပံ့ပိုးပေးသူများ - လူမှုရေးဝင်ရောက်မှု

လူမှုကွန်ရက်များမှ လော့ဂ်အင်ကို အသုံးပြုနိုင်သည်။ အသုံးပြုသူများကို စစ်မှန်ကြောင်းအထောက်အထားပြနိုင်မှုကို အသက်သွင်းရန် Keycloack စီမံခန့်ခွဲသူ ကွန်ဆိုးလ်ကို အသုံးပြုပါ။ အပလီကေးရှင်းကုဒ်တွင် အပြောင်းအလဲများ မလိုအပ်ဘဲ ဤလုပ်ဆောင်ချက်ကို ကွက်လပ်တွင် ရနိုင်ပြီး ပရောဂျက်၏ မည်သည့်အဆင့်တွင်မဆို စတင်အသုံးပြုနိုင်ပါသည်။

မိုက်ခရိုဝန်ဆောင်မှုဗိသုကာဆိုင်ရာ SSO ကျွန်ုပ်တို့သည် Keycloak ကိုအသုံးပြုသည်။ အပိုင်း 1

အသုံးပြုသူအထောက်အထားစိစစ်ခြင်းအတွက် OpenID/SAML Identity ပံ့ပိုးပေးသူများကို အသုံးပြုနိုင်သည်။

Keycloak တွင် OAuth2 ကိုအသုံးပြု၍ ပုံမှန်ခွင့်ပြုချက်အခြေအနေများ

ခွင့်ပြုချက်ကုဒ်စီးဆင်းမှု - server-side applications များနှင့်အသုံးပြုသည်။ အပလီကေးရှင်း၏ အရင်းအမြစ်ကုဒ်နှင့် ဖောက်သည်ဒေတာကို ပြင်ပလူများအတွက် မရရှိနိုင်သည့် ဆာဗာအပလီကေးရှင်းများအတွက် အလွန်သင့်လျော်သော ခွင့်ပြုချက်ခွင့်ပြုချက်အမျိုးအစားများထဲမှ တစ်ခုဖြစ်သည်။ ဤကိစ္စတွင် လုပ်ငန်းစဉ်သည် လမ်းကြောင်းပြန်ညွှန်မှုအပေါ် အခြေခံသည်။ အပလီကေးရှင်းသည် ဝဘ်ဘရောက်ဆာကဲ့သို့သော သုံးစွဲသူအေးဂျင့် (အသုံးပြုသူ-အေးဂျင့်) နှင့် ဆက်သွယ်နိုင်ရမည် - အသုံးပြုသူအေးဂျင့်မှတစ်ဆင့် API ခွင့်ပြုချက်ကုဒ်များကို ပြန်လည်ညွှန်းဆိုခြင်းကို လက်ခံရရှိရမည်ဖြစ်သည်။

သွယ်ဝိုက်သောစီးဆင်းမှု - မိုဘိုင်း သို့မဟုတ် ဝဘ်အက်ပလီကေးရှင်းများ (အသုံးပြုသူ၏စက်ပစ္စည်းပေါ်တွင် လုပ်ဆောင်နေသော အက်ပ်များ) မှ အသုံးပြုသည်။

သွယ်ဝိုက်သောခွင့်ပြုချက်ခွင့်ပြုချက်အမျိုးအစားကို မိုဘိုင်းနှင့် ဝဘ်အပလီကေးရှင်းများက အသုံးပြုသည်မှာ သုံးစွဲသူ၏လျှို့ဝှက်ချက်ကို အာမမခံနိုင်ပါ။ သွယ်ဝိုက်သောခွင့်ပြုချက်အမျိုးအစားသည် အသုံးပြုသူအေးဂျင့်ပြန်ညွှန်းခြင်းကိုလည်းအသုံးပြုသည်၊ ၎င်းသည် အပလီကေးရှင်းတွင်ထပ်မံအသုံးပြုရန်အတွက်အသုံးပြုသူအေးဂျင့်ထံသို့ဝင်ရောက်ခွင့်တိုကင်ကိုပေးပို့သည်။ ၎င်းသည် အသုံးပြုသူ၏စက်ပစ္စည်းပေါ်ရှိ အသုံးပြုသူနှင့် အခြားအပလီကေးရှင်းများအတွက် တိုကင်ကိုရရှိနိုင်စေသည်။ ဤခွင့်ပြုချက်ခွင့်ပြုချက်အမျိုးအစားသည် အပလီကေးရှင်း၏အထောက်အထားကို စစ်မှန်ကြောင်းအထောက်အထားမပြဘဲ လုပ်ငန်းစဉ်ကိုယ်တိုင်က ပြန်ညွှန်း URL (ဝန်ဆောင်မှုနှင့်ယခင်မှတ်ပုံတင်ထားသော) ပေါ်တွင်မူတည်သည်။

Implicit Flow သည် အသုံးပြုခွင့် တိုကင် အသစ်ပြန်စသည့် တိုကင်များကို မပံ့ပိုးပါ။

Client Credentials Grant Flow — အပလီကေးရှင်းသည် API ကိုဝင်ရောက်သည့်အခါအသုံးပြုသည်။ ဤခွင့်ပြုချက်ခွင့်ပြုချက်အမျိုးအစားကို ယေဘုယျအားဖြင့် အသုံးပြုသူအပြန်အလှန်တုံ့ပြန်မှုမရှိဘဲ နောက်ခံတွင်လုပ်ဆောင်ရမည့် server-to-server အပြန်အလှန်တုံ့ပြန်မှုများအတွက် အသုံးပြုသည်။ ကလိုင်းယင့် အထောက်အထား ထောက်ပံ့မှု စီးဆင်းမှုသည် ဝဘ်ဝန်ဆောင်မှု (လျှို့ဝှက်ကလိုင်းယင့်) အား အခြားဝဘ်ဝန်ဆောင်မှုကို ခေါ်ဆိုသည့်အခါ အသုံးပြုသူတစ်ဦး အယောင်ဆောင်မည့်အစား ၎င်း၏ကိုယ်ပိုင်အထောက်အထားများကို အသုံးပြုခွင့်ပြုသည်။ ပိုမိုမြင့်မားသောလုံခြုံရေးအတွက်၊ ခေါ်ဆိုမှုဝန်ဆောင်မှုသည် သက်သေခံလက်မှတ်တစ်ခု (မျှဝေထားသောလျှို့ဝှက်ချက်အစား) အသိအမှတ်ပြုလက်မှတ်ကို အသုံးပြုရန် ဖြစ်နိုင်သည်။

OAuth2 သတ်မှတ်ချက်တွင် ဖော်ပြထားပါသည်။
RFC-6749
RFC-8252
RFC-6819

JWT တိုကင်နှင့် ၎င်း၏အကျိုးကျေးဇူးများ

JWT (JSON Web Token) သည် အဖွင့်စံတစ်ခု (https://tools.ietf.org/html/rfc7519JSON အရာဝတ္ထုတစ်ခုအနေဖြင့် ပါတီများအကြား အချက်အလက်များကို လုံခြုံစွာလွှဲပြောင်းရန် ကျစ်လစ်ပြီး ကိုယ်တိုင်ပါရှိသော နည်းလမ်းကို သတ်မှတ်ပေးသည်။

စံသတ်မှတ်ချက်အရ၊ တိုကင်တွင် အစက်များဖြင့် ပိုင်းခြားထားသော အခြေခံ-64 ဖော်မတ်တွင် အပိုင်းသုံးပိုင်းပါဝင်သည်။ ပထမအပိုင်းကို ဒစ်ဂျစ်တယ်လက်မှတ်ရရှိရန်အတွက် တိုကင်အမျိုးအစားနှင့် hash algorithm ၏အမည်များပါရှိသော ခေါင်းစီးဟုခေါ်သည်။ ဒုတိယအပိုင်းသည် အခြေခံအချက်အလက်များ (အသုံးပြုသူ၊ အရည်အချင်းများ စသည်) ကို သိမ်းဆည်းထားသည်။ တတိယအပိုင်းကတော့ Digital Signature ဖြစ်ပါတယ်။

. .
သင့် DB တွင် တိုကင်တစ်ခုကို ဘယ်တော့မှ မသိမ်းဆည်းပါနှင့်။ တရားဝင် တိုကင်တစ်ခုသည် စကားဝှက်တစ်ခုနှင့် ညီမျှသောကြောင့်၊ တိုကင်ကို သိမ်းဆည်းခြင်းသည် စကားဝှက်ကို ရှင်းလင်းသောစာသားဖြင့် သိမ်းဆည်းခြင်းနှင့် တူပါသည်။
အသုံးပြုခွင့် တိုကင် ပိုင်ရှင်အား လုံခြုံသော ဆာဗာရင်းမြစ်များထံ ဝင်ရောက်ခွင့်ပေးသည့် တိုကင်တစ်ခုဖြစ်သည်။ ၎င်းသည် အများအားဖြင့် သက်တမ်းတိုပြီး တိုကင်တောင်းဆိုသော ပါတီ၏ IP လိပ်စာကဲ့သို့သော အပိုအချက်အလက်များကို သယ်ဆောင်လာနိုင်သည်။

တိုကင်ကို ပြန်လည်စတင်ပါ။ သုံးစွဲသူများသည် ၎င်းတို့၏ သက်တမ်းကုန်ဆုံးပြီးနောက် ဝင်ရောက်ခွင့်တိုကင်အသစ်များကို တောင်းဆိုရန် ခွင့်ပြုသည့် တိုကင်တစ်ခုဖြစ်သည်။ ဤတိုကင်များကို အများအားဖြင့် အချိန်ကြာမြင့်စွာ ထုတ်ပေးပါသည်။

microservice ဗိသုကာတွင်အသုံးပြုခြင်း၏အဓိကအားသာချက်များ

  • တစ်ကြိမ်သာ စစ်မှန်ကြောင်းအထောက်အထားပြခြင်းဖြင့် အမျိုးမျိုးသော အပလီကေးရှင်းများနှင့် ဝန်ဆောင်မှုများကို ဝင်ရောက်ကြည့်ရှုနိုင်သည်။
  • အသုံးပြုသူပရိုဖိုင်တွင် လိုအပ်သော attribute အများအပြားမရှိပါက၊ အလိုအလျောက်နှင့် ပျံသန်းခြင်းအပါအဝင် payload တွင် ထည့်သွင်းနိုင်သည့် ဒေတာကို ဖြည့်စွမ်းနိုင်မည်ဖြစ်သည်။
  • Active sessions များအကြောင်း အချက်အလက်များကို သိမ်းဆည်းရန်မလိုအပ်ပါ၊ ဆာဗာအပလီကေးရှင်းသည် လက်မှတ်ကို အတည်ပြုရန်သာ လိုအပ်သည်။
  • payload တွင် အပိုထပ်ဆောင်း attribute များမှတစ်ဆင့် လိုက်လျောညီထွေရှိသော ဝင်ရောက်ထိန်းချုပ်မှု။
  • ခေါင်းစီးနှင့် payload အတွက် တိုကင်လက်မှတ်ကို အသုံးပြုခြင်းသည် ဖြေရှင်းချက်တစ်ခုလုံး၏ လုံခြုံရေးကို တိုးစေသည်။

JWT တိုကင် - ဖွဲ့စည်းမှု

header ကို - မူရင်းအားဖြင့်၊ ခေါင်းစီးတွင် တိုကင်အမျိုးအစားနှင့် ကုဒ်ဝှက်ခြင်းအတွက် အသုံးပြုသည့် အယ်လဂိုရီသမ်များသာ ပါရှိသည်။

တိုကင်အမျိုးအစားကို "စာရိုက်" သော့တွင် သိမ်းဆည်းထားသည်။ 'အမျိုးအစား' သော့ကို JWT တွင် လျစ်လျူရှုထားသည်။ "စာရိုက်" သော့ရှိနေပါက၊ ဤအရာဝတ္ထုသည် JSON ဝဘ်တိုကင်ဖြစ်ကြောင်း ညွှန်ပြရန်အတွက် ၎င်း၏တန်ဖိုးသည် JWT ဖြစ်ရပါမည်။

ဒုတိယကီး "alg" သည် တိုကင်ကို စာဝှက်ရန် အသုံးပြုသည့် အယ်လဂိုရီသမ်ကို သတ်မှတ်သည်။ ၎င်းကို ပုံမှန်အားဖြင့် HS256 သို့ သတ်မှတ်သင့်သည်။ ခေါင်းစီးကို base64 တွင် ကုဒ်လုပ်ထားသည်။

{ "alg": "HS256", "type": "JWT"}
payload (အကြောင်းအရာ) - စစ်ဆေးရန် လိုအပ်သည့် အချက်အလက်မှန်သမျှကို payload တွင် သိမ်းဆည်းထားသည်။ payload ရှိ သော့တစ်ခုစီကို "တောင်းဆိုမှု" ဟုခေါ်သည်။ ဥပမာအားဖြင့်၊ ဖိတ်ကြားချက် (ပိတ်ထားသော ပရိုမိုရှင်း) ဖြင့်သာ လျှောက်လွှာကို ထည့်သွင်းနိုင်သည်။ တစ်စုံတစ်ဦးကို ဖိတ်ခေါ်လိုသောအခါ၊ ဖိတ်စာတစ်စောင် ပေးပို့ပါသည်။ အီးမေးလ်လိပ်စာသည် ဖိတ်ကြားချက်ကိုလက်ခံသူမှပိုင်ဆိုင်ကြောင်းစစ်ဆေးရန်အရေးကြီးပါသည်၊ ထို့ကြောင့်ကျွန်ုပ်တို့သည်ဤလိပ်စာကို payload တွင်ထည့်သွင်းပါမည်၊ ၎င်းကို "အီးမေးလ်" သော့တွင်သိမ်းဆည်းထားပါသည်။

{"အီးမေးလ်"- "example@x5.ru" }

payload ရှိ သော့များသည် မထင်သလို ဖြစ်နိုင်ပါသည်။ သို့သော်၊ ကန့်သတ်ချက်အချို့ရှိသည်-

  • iss (ထုတ်ပေးသူ) - တိုကင်ပေးပို့နေသည့် လျှောက်လွှာကို ခွဲခြားသတ်မှတ်သည်။
  • sub (Subject) - တိုကင်၏ ဘာသာရပ်ကို သတ်မှတ်သည်။
  • aud (ပရိသတ်) သည် ဤတိုကင်၏ လက်ခံရရှိသူများစာရင်းဖြစ်သည့် case-sensitive strings သို့မဟုတ် URI များ၏ array တစ်ခုဖြစ်သည်။ လက်ခံသည့်ဘက်မှ ပေးထားသောသော့ဖြင့် JWT ကို လက်ခံသောအခါ၊ လက်ခံသူများတွင် သူ့ဘာသာသူ ရှိနေခြင်းရှိမရှိ စစ်ဆေးရပါမည် - မဟုတ်ပါက တိုကင်ကို လျစ်လျူရှုပါ။
  • exp (သက်တမ်းကုန်ဆုံးချိန်) - တိုကင်သက်တမ်းကုန်ဆုံးချိန်ကို ဖော်ပြသည်။ JWT စံနှုန်းသည် သက်တမ်းကုန်ဆုံးသွားသော တိုကင်များကို ငြင်းပယ်ရန် ၎င်း၏ အကောင်အထည်ဖော်မှုများအားလုံးကို လိုအပ်သည်။ exp ကီးသည် unix ဖော်မတ်တွင် အချိန်တံဆိပ်တစ်ခု ဖြစ်ရပါမည်။
  • nbf (Not Before) သည် တိုကင်တရားဝင်သည့်အချိန်ကို ဆုံးဖြတ်သည့် unix ဖော်မတ်ရှိ အချိန်တစ်ခုဖြစ်သည်။
  • iat (ထုတ်ပေးသည့်အချိန်တွင်) - ဤသော့သည် တိုကင်ထုတ်ပေးသည့်အချိန်ကိုကိုယ်စားပြုပြီး JWT ၏အသက်ကိုဆုံးဖြတ်ရန်အသုံးပြုနိုင်သည်။ iat သော့သည် unix ဖော်မတ်ရှိ အချိန်တံဆိပ်တစ်ခု ဖြစ်ရပါမည်။
  • Jti (JWT ID) — ဤတိုကင်၏ထူးခြားသောအမှတ်အသားကို သတ်မှတ်ပေးသည့် စာကြောင်းတစ်ကြောင်း။

payload အား ကုဒ်ဝှက်ထားသောပုံစံဖြင့် မပို့ကြောင်း နားလည်ရန် အရေးကြီးသည် (တိုကင်များကို nested နိုင်ပြီး၊ ထို့နောက် ကုဒ်ဝှက်ထားသော ဒေတာကို ပို့နိုင်သည်)။ ထို့ကြောင့် လျှို့ဝှက်အချက်အလက်များကို သိမ်းဆည်းထားနိုင်မည်မဟုတ်ပေ။ ခေါင်းစီးကဲ့သို့ပင်၊ payload သည် base64 ကို ကုဒ်လုပ်ထားသည်။
လက်မှတ် - ကျွန်ုပ်တို့တွင် ခေါင်းစဉ်နှင့် payload တစ်ခုရှိသောအခါ၊ လက်မှတ်ကို တွက်ချက်နိုင်သည်။

Base64-encoded- header နှင့် payload ကိုယူသည်၊ ၎င်းတို့ကို အစက်မှတဆင့် string တစ်ခုသို့ ပေါင်းစပ်ထားသည်။ ထို့နောက် ဤစာကြောင်းနှင့် လျှို့ဝှက်သော့ကို ခေါင်းစီးတွင် သတ်မှတ်ထားသည့် ကုဒ်ဝှက်ခြင်းဆိုင်ရာ အယ်လဂိုရီသမ် ("alg" သော့) သို့ ထည့်သွင်းသည်။ သော့သည် မည်သည့်စာကြောင်းမဆို ဖြစ်နိုင်သည်။ ကောက်ရန်ပိုကြာမည်ဖြစ်သောကြောင့် ပိုရှည်သောကြိုးများကို ဦးစားပေးပါမည်။

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

Keycloak Failover Cluster Architecture တည်ဆောက်ခြင်း။

ပရောဂျက်အားလုံးအတွက် အစုလိုက်တစ်ခုတည်းကို အသုံးပြုသောအခါ၊ SSO ဖြေရှင်းချက်အတွက် လိုအပ်ချက်များ တိုးများလာသည်။ ပရောဂျက်အရေအတွက်နည်းသောအခါ၊ ဤလိုအပ်ချက်များသည် ပရောဂျက်အားလုံးအတွက် သိသာထင်ရှားမှုမရှိသော်လည်း၊ အသုံးပြုသူအရေအတွက်နှင့် ပေါင်းစပ်မှုများ တိုးလာခြင်းကြောင့် ရရှိနိုင်မှုနှင့် စွမ်းဆောင်ရည်အတွက် လိုအပ်ချက်များ တိုးလာပါသည်။

SSO တစ်ခုတည်း ချို့ယွင်းမှုဖြစ်နိုင်ခြေကို တိုးလာခြင်းသည် ဖြေရှင်းချက်ဗိသုကာဆိုင်ရာ လိုအပ်ချက်များနှင့် မလိုအပ်သော အစိတ်အပိုင်းများအတွက် အသုံးပြုသည့် နည်းလမ်းများကို တိုးစေပြီး အလွန်တင်းကျပ်သော SLA တစ်ခုသို့ ဦးတည်စေသည်။ ဤကိစ္စနှင့် ပတ်သက်၍၊ မကြာခဏဆိုသလို ဖွံ့ဖြိုးတိုးတက်မှု သို့မဟုတ် အကောင်အထည်ဖော်မှုဆိုင်ရာ ဖြေရှင်းချက်များ၏ အစောပိုင်းအဆင့်များအတွင်း ပရောဂျက်များတွင် ၎င်းတို့၏ အမှားအယွင်းမရှိသော အခြေခံအဆောက်အအုံများ ရှိသည်။ ဖွံ့ဖြိုးတိုးတက်လာသည်နှင့်အမျှ ဖွံ့ဖြိုးတိုးတက်မှုနှင့် အတိုင်းအတာအထိ အခွင့်အလမ်းများ ချမှတ်ရန် လိုအပ်ပါသည်။ container virtualization သို့မဟုတ် hybrid ချဉ်းကပ်နည်းကို အသုံးပြု၍ failover အစုအဝေးတစ်ခုကို တည်ဆောက်ရန် အလွယ်ဆုံးဖြစ်သည်။

Active/Active နှင့် Active/Passive အစုအဝေးမုဒ်များတွင် အလုပ်လုပ်ရန်၊ ဆက်စပ်ဒေတာဘေ့စ်တစ်ခုရှိ ဒေတာညီညွတ်မှုကို သေချာစေရန် လိုအပ်သည် - ဒေတာဘေ့စ်ဆုံမှတ်နှစ်ခုလုံးကို မတူညီသော ပထဝီဖြန့်ဝေသည့်ဒေတာစင်တာများကြားတွင် ထပ်တူပြုရပါမည်။

အမှား-ခံနိုင်ရည်ရှိသော တပ်ဆင်ခြင်း၏ အရိုးရှင်းဆုံး ဥပမာ။

မိုက်ခရိုဝန်ဆောင်မှုဗိသုကာဆိုင်ရာ SSO ကျွန်ုပ်တို့သည် Keycloak ကိုအသုံးပြုသည်။ အပိုင်း 1

အစုအဝေးတစ်ခုတည်းကို အသုံးပြုခြင်း၏ အကျိုးကျေးဇူးများကား အဘယ်နည်း။

  • မြင့်မားသောရရှိနိုင်မှုနှင့်စွမ်းဆောင်ရည်။
  • လည်ပတ်မှုမုဒ်များအတွက် ပံ့ပိုးမှု- Active/ Active၊ Active/ Passive။
  • ကွန်တိန်နာ virtualization ကိုအသုံးပြုသည့်အခါ dynamically စကေးကိုချဲ့ထွင်နိုင်စွမ်း။
  • ဗဟိုချုပ်ကိုင်မှု စီမံခန့်ခွဲရေးနှင့် စောင့်ကြည့်ရေး ဖြစ်နိုင်ခြေ။
  • ပရောဂျက်များတွင် အသုံးပြုသူများအား ခွဲခြားသတ်မှတ်ခြင်း/စစ်မှန်ကြောင်း/ခွင့်ပြုချက်အတွက် တစ်စုတစ်စည်းတည်းချဉ်းကပ်မှု။
  • အသုံးပြုသူပါဝင်ပတ်သက်မှုမရှိဘဲ မတူညီသောပရောဂျက်များကြားတွင် ပိုမိုပွင့်လင်းမြင်သာသော အပြန်အလှန်ဆက်ဆံရေး။
  • ပရောဂျက်အမျိုးမျိုးတွင် JWT တိုကင်ကို ပြန်သုံးနိုင်မှု။
  • တစ်ခုတည်းသောအချက်။
  • microservices/container virtualization ကို အသုံးပြု၍ ပရောဂျက်များကို ပိုမိုမြန်ဆန်စွာ စတင်နိုင်သည် (အပိုအစိတ်အပိုင်းများကို လွှင့်တင်ပြီး ပြင်ဆင်သတ်မှတ်ရန် မလိုအပ်ပါ)။
  • ရောင်းချသူထံမှ စီးပွားရေးဆိုင်ရာ ပံ့ပိုးကူညီမှုများကို ဝယ်ယူနိုင်သည်။

Cluster တစ်ခုစီစဉ်တဲ့အခါ ဘာတွေရှာရမလဲ

DBMS

Keycloak သည် နယ်မြေများ၊ ဖောက်သည်များ၊ အသုံးပြုသူများ စသည်တို့ကို သိမ်းဆည်းရန် ဒေတာဘေ့စ် စီမံခန့်ခွဲမှုစနစ်ကို အသုံးပြုသည်။
DBMS ၏ကျယ်ပြန့်သောအကွာအဝေးကိုပံ့ပိုးထားသည်- MS SQL၊ Oracle၊ MySQL၊ PostgreSQL။ Keycloak သည် ၎င်း၏ကိုယ်ပိုင် built-in ဆက်စပ်ဒေတာဘေ့စ်ပါရှိသည်။ ဖွံ့ဖြိုးတိုးတက်မှုပတ်ဝန်းကျင်များကဲ့သို့သော မတင်ဆောင်နိုင်သော ပတ်ဝန်းကျင်များအတွက် အသုံးပြုရန် အကြံပြုထားသည်။

Active/Active နှင့် Active/Passive အစုအဝေးမုဒ်များတွင် အလုပ်လုပ်ရန်၊ ဆက်စပ်ဒေတာဘေ့စ်တစ်ခုရှိ ဒေတာညီညွတ်မှု လိုအပ်ပြီး ဒေတာဘေ့စ် အစုအဝေးနှစ်ခုလုံးကို ဒေတာစင်တာများကြားတွင် ထပ်တူပြုပါသည်။

ဖြန့်ဝေထားသော ကက်ရှ် (Infinspan)

အစုအဝေးကို မှန်ကန်စွာလုပ်ဆောင်နိုင်စေရန်အတွက် JBoss Data Grid ကို အသုံးပြု၍ အောက်ပါ ကက်ရှ်အမျိုးအစားများ ထပ်တူထပ်မျှ လိုအပ်သည်-

Authentication sessions - သတ်သတ်မှတ်မှတ်အသုံးပြုသူတစ်ဦးကို စစ်မှန်ကြောင်းအထောက်အထားပြသည့်အခါ ဒေတာသိမ်းဆည်းရန်အသုံးပြုသည်။ ဤကက်ရှ်မှ တောင်းဆိုချက်များသည် ပုံမှန်အားဖြင့် အပလီကေးရှင်းမဟုတ်ဘဲ ဘရောက်ဆာနှင့် Keycloak ဆာဗာတို့သာ ပါဝင်ပါသည်။

လုပ်ဆောင်ချက် တိုကင်များကို အသုံးပြုသူသည် လုပ်ဆောင်ချက်တစ်ခုကို အပြိုင်အဆိုင် အတည်ပြုရန် လိုအပ်သည့် အခြေအနေများတွင် အသုံးပြုသည် (အီးမေးလ်မှတဆင့်)။ ဥပမာအားဖြင့်၊ စကားဝှက်မေ့သွားသည့်အတောအတွင်း၊ အသုံးပြုထားပြီးဖြစ်သော ဆက်စပ်လုပ်ဆောင်ချက်တိုကင်များအကြောင်း မက်တာဒေတာကို ခြေရာခံရန်အတွက် actionTokens Infinispan ကက်ရှ်ကို အသုံးပြုထားသောကြောင့် ၎င်းကို ပြန်သုံး၍မရပါ။

Caching နှင့် ခိုင်မြဲသောဒေတာ၏တရားမဝင်ခြင်း - ဒေတာဘေ့စ်သို့မလိုအပ်သောမေးခွန်းများကိုရှောင်ရှားရန်အမြဲတမ်းဒေတာကိုသိမ်းဆည်းရန်အသုံးပြုသည်။ မည်သည့် Keycloak ဆာဗာမဆို ဒေတာကို အပ်ဒိတ်လုပ်သောအခါ၊ ဒေတာစင်တာအားလုံးရှိ အခြားသော Keycloak ဆာဗာများအားလုံး ၎င်းအကြောင်းကို သိရန်လိုအပ်ပါသည်။

အလုပ် - အစုအစည်းများနှင့် ဒေတာစင်တာများအကြား မမှန်ကန်သော မက်ဆေ့ချ်များ ပေးပို့ရန်သာ အသုံးပြုသည်။

အသုံးပြုသူစက်ရှင်များ - အသုံးပြုသူ၏ဘရောက်ဆာစက်ရှင်၏ကြာချိန်အတွက် တရားဝင်သောအသုံးပြုသူအစည်းအဝေးများအကြောင်း ဒေတာသိမ်းဆည်းရန်အသုံးပြုသည်။ ကက်ရှ်သည် နောက်ဆုံးအသုံးပြုသူနှင့် အပလီကေးရှင်းထံမှ HTTP တောင်းဆိုမှုများကို လုပ်ဆောင်ရမည်ဖြစ်သည်။

Brute force protection - မအောင်မြင်သော login များအကြောင်း ဒေတာခြေရာခံရန် အသုံးပြုသည်။

Load ချိန်ခွင်လျှာ

load balancer သည် keycloak ၏ single entry point ဖြစ်ပြီး sticky sessions များကို ပံ့ပိုးပေးရပါမည်။

လျှောက်လွှာဆာဗာများ

၎င်းတို့သည် တစ်ခုနှင့်တစ်ခု အစိတ်အပိုင်းများ၏ အပြန်အလှန်အကျိုးသက်ရောက်မှုကို ထိန်းချုပ်ရန် အသုံးပြုကြပြီး ရှိပြီးသား အလိုအလျောက်စနစ်ဆိုင်ရာ ကိရိယာများနှင့် အခြေခံအဆောက်အအုံ အလိုအလျောက်စနစ်ဆိုင်ရာ ကိရိယာများ၏ ရွေ့လျားနိုင်သော အတိုင်းအတာကို အသုံးပြု၍ အသွင်တူ သို့မဟုတ် သိုလှောင်ထားနိုင်သည်။ OpenShift၊ Kubernates၊ Rancher တွင် အသုံးအများဆုံး ဖြန့်ကျက်မှုအခြေအနေများ။

ဒါက ပထမအပိုင်း- သီအိုရီပိုင်းကို နိဂုံးချုပ်ပါတယ်။ နောက်ဆောင်းပါးတွဲများတွင် အမျိုးမျိုးသော အထောက်အထားပံ့ပိုးပေးသူများနှင့် ပေါင်းစပ်မှုနမူနာများနှင့် ဆက်တင်များ၏နမူနာများကို ခွဲခြမ်းစိတ်ဖြာပါမည်။

source: www.habr.com

မှတ်ချက် Add