SSO เบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบˆเบธเบฅเบฐเบžเบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ Keycloak. เบชเปˆเบงเบ™ #1

เปƒเบ™เบšเปเบฅเบดเบชเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปƒเบ”เบเปเปˆเบ•เบฒเบก, เปเบฅเบฐเบเบธเปˆเบกเบ„เป‰เบฒเบ›เบตเบ X5 เปเบกเปˆเบ™เบšเปเปˆเบกเบตเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเป‰เบฒเบงเบซเบ™เป‰เบฒ, เบˆเปเบฒเบ™เบงเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™. เป€เบกเบทเปˆเบญเป€เบงเบฅเบฒเบœเปˆเบฒเบ™เป„เบ›, เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบˆเบฒเบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบซเบ™เบถเปˆเบ‡เป„เบ›เบซเบฒเบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ Single-Sing-On (SSO) เบ”เบฝเบง. เปเบ•เปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เป€เบกเบทเปˆเบญเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ•เบปเบงเบ•เบปเบ™เป€เบŠเบฑเปˆเบ™ AD เบซเบผเบทเบญเบทเปˆเบ™เป†เบ—เบตเปˆเบšเปเปˆเบกเบตเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบกเปˆเบ™เปƒเบŠเป‰เปเบฅเป‰เบงเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ•เปˆเบฒเบ‡เป†. เบซเป‰เบญเบ‡เบฎเบฝเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ "เบ™เบฒเบเบซเบ™เป‰เบฒเบ›เบฐเบˆเปเบฒเบ•เบปเบง" เบˆเบฐเบกเบฒเป€เบ–เบดเบ‡เบเบฒเบ™เบเบนเป‰เป„เบž. เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบกเบฑเบ™, เป€เบŠเบฑเปˆเบ™: Keycloak, เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™ Gravitee Access, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบชเปˆเบงเบ™เบซเบผเบฒเบเบกเบฑเบ, เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบชเบฒเบกเบฒเบ”เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™: เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ, เบเบฒเบ™เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบเบฒเบ™เปเบเป‰เป„เบ‚เบ•เป‰เบญเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบฅเบงเบกเป€เบญเบปเบฒเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบซเบ™เบถเปˆเบ‡, เปเบฅเบฐเบเบฒเบ™เปเบเป‰เป„เบ‚เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบšเปเบฅเบดเบชเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบตเบ™เบฒเบเบซเบ™เป‰เบฒเบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ” - Keycloak.

SSO เบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบˆเบธเบฅเบฐเบžเบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ Keycloak. เบชเปˆเบงเบ™ #1

Keycloak เปเบกเปˆเบ™เบ•เบปเบงเบ•เบปเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เปเบฅเบฐเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ—เบตเปˆเบฎเบฑเบเบชเบฒเป„เบงเป‰เป‚เบ”เบ RedHat. เบกเบฑเบ™เป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰ SSO - RH-SSO.

เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบžเบทเป‰เบ™เบ–เบฒเบ™

เบเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบงเบดเบ—เบตเปเบเป‰เป„เบ‚เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™, เบ—เปˆเบฒเบ™เบ„เบงเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเปƒเบ™เบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เปเบฅเบฐเบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™:

SSO เบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบˆเบธเบฅเบฐเบžเบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ Keycloak. เบชเปˆเบงเบ™ #1

เบเบฒเบ™เบเปเบฒเบ™เบปเบ” เปเบกเปˆเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบฎเบฑเบšเบฎเบนเป‰เบซเบปเบงเบ‚เปเป‰เปƒเบ”เบซเบ™เบถเปˆเบ‡เป‚เบ”เบเบ•เบปเบงเบฅเบฐเบšเบธเบ‚เบญเบ‡เบฅเบฒเบง (เปƒเบ™เบ„เปเบฒเบชเบฑเบšเบ•เปˆเบฒเบ‡เป†เบญเบทเปˆเบ™เป†, เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบŠเบทเปˆ, เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบซเบผเบทเบ•เบปเบงเป€เบฅเบ).

เบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™ - เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบš (เบœเบนเป‰โ€‹เปƒเบŠเป‰โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบ”เป‰เบงเบโ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบœเปˆเบฒเบ™โ€‹, เบˆเบปเบ”โ€‹เบซเบกเบฒเบโ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบ”เป‰เบงเบโ€‹เบฅเบฒเบโ€‹เป€เบŠเบฑเบ™โ€‹เป€เบญโ€‹เป€เบฅเบฑเบโ€‹เป‚เบ•เบฃโ€‹เบ™เบดเบโ€‹, เปเบฅเบฐโ€‹เบญเบทเปˆเบ™เป†โ€‹)

เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” โ€“ เปเบกเปˆเบ™เปƒเบซเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบญเบตเป€เบกเบง).

Keycloak Identity Broker

เบเบฐเปเบˆ เป€เบ›เบฑเบ™เบ•เบปเบงเบ•เบปเบ™เบ‚เบญเบ‡เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ” เปเบฅเบฐเบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ—เบตเปˆเบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเปƒเบŠเป‰เปƒเบ™ IS เบšเปˆเบญเบ™เบ—เบตเปˆเบฎเบนเบšเปเบšเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณเบˆเบธเบ™เบฅเบฐเบžเบฒเบเบชเบฒเบกเบฒเบ”เบ™เบณเปƒเบŠเป‰เป„เบ”เป‰.

Keycloak เบชเบฐเป€เบซเบ™เบตเบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เป€เบŠเบฑเปˆเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบ”เบฝเบง (SSO), เบ•เบปเบงเบ•เบปเบ™เบ‚เบญเบ‡เบ™เบฒเบเบซเบ™เป‰เบฒเปเบฅเบฐเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบชเบฑเบ‡เบ„เบปเบก, เบชเบฐเบซเบฐเบžเบฑเบ™เบœเบนเป‰เปƒเบŠเป‰, เบœเบนเป‰เบ”เบฑเบ”เปเบ›เบ‡เบฅเบนเบเบ„เป‰เบฒ, เบ„เบญเบ™เป‚เบŠเบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เปเบฅเบฐเบ„เบญเบ™เป‚เบŠเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบšเบฑเบ™เบŠเบต.

เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบ Keycloak:

  • Single-Sign On เปเบฅเบฐ Single-Sign Out เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบš.
  • เบฎเบญเบ‡เบฎเบฑเบš OpenID/OAuth 2.0/SAML.
  • Identity Brokering โ€“ เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เป‚เบ”เบเปƒเบŠเป‰ OpenID Connect เบซเบผเบทเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ•เบปเบงเบ•เบปเบ™ SAML.
  • เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบชเบฑเบ‡เบ„เบปเบก - Google, GitHub, Facebook, Twitter เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบœเบนเป‰เปƒเบŠเป‰.
  • เบชเบฐเบซเบฐเบžเบฑเบ™เบœเบนเป‰เปƒเบŠเป‰ - synchronization เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ LDAP เปเบฅเบฐ Active Directory เปเบฅเบฐเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ•เบปเบงเบ•เบปเบ™เบญเบทเปˆเบ™เป†.
  • เบ‚เบปเบง Kerberos - เปƒเบŠเป‰เป€เบŠเบตเบšเป€เบงเบต Kerberos เบชเบณเบฅเบฑเบšเบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เบœเบนเป‰เปƒเบŠเป‰เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”.
  • Admin Console - เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เปเบšเบšเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบฅเบฐเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบเบฒเบ™เปเบเป‰เป„เบ‚เบœเปˆเบฒเบ™เป€เบงเบฑเบš.
  • Account Management Console - เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบ‚เบญเบ‡เป‚เบ›เบฃเป„เบŸเบฅเปŒเบœเบนเป‰เปƒเบŠเป‰.
  • เบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ•เบปเบงเบ•เบปเบ™เบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”เบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”.
  • 2FA Authentication โ€“ เบฎเบญเบ‡เบฎเบฑเบš TOTP/HOTP เป‚เบ”เบเปƒเบŠเป‰ Google Authenticator เบซเบผเบท FreeOTP.
  • เบเบฐเปเบชเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš - เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบœเบนเป‰เปƒเบŠเป‰เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡, เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบซเบกเปˆ, เปเบฅเบฐเบญเบทเปˆเบ™เป†เปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰.
  • Session Management - เบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เป€เบŠเบ”เบŠเบฑเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบˆเบฒเบเบˆเบธเบ”เบ”เบฝเบง.
  • Token Mappers โ€“ เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰, เบšเบปเบ”เบšเบฒเบ” เปเบฅเบฐเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบญเบทเปˆเบ™เป†เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบ™ tokens.
  • เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ™เบฐเป‚เบเบšเบฒเบเปเบšเบšเบเบทเบ”เบซเบเบธเปˆเบ™เปƒเบ™เบ—เบปเปˆเบงเบญเบฒเบ™เบฒเบˆเบฑเบ, เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰
  • เบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญ CORS โ€“ เบœเบนเป‰เบ”เบฑเบ”เปเบ›เบ‡เบฅเบนเบเบ„เป‰เบฒเบกเบตเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบš CORS เบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡.
  • เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ (SPI) - เบˆเปเบฒเบ™เบงเบ™ SPIs เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบเบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฑเบšเปเบ•เปˆเบ‡เบฅเบฑเบเบชเบฐเบ™เบฐเบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ: เบเบฐเปเบชเบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™, เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบฅเบฐเบšเบธเบ•เบปเบงเบ•เบปเบ™, เปเบœเบ™เบ—เบตเปˆเป‚เบ›เป‚เบ•เบ„เบญเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†.
  • เบญเบฐเปเบ”เบšเป€เบ•เบตเบฅเบนเบเบ„เป‰เบฒเบชเปเบฒเบฅเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ JavaScript, WildFly, JBoss EAP, Fuse, Tomcat, Jetty, Spring.
  • เบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ•เปˆเบฒเบ‡เป† เบ—เบตเปˆเบฎเบญเบ‡เบฎเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” OpenID Connect Relying Party เบซเบผเบท 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
Java API https://www.keycloak.org/docs-api/8.0/javadocs/index.html

เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบฅเบฐเบšเบธเบ•เบปเบงเบ•เบปเบ™เบงเบดเบชเบฒเบซเบฐเบเบดเบ” (เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ)

เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบœเบนเป‰เปƒเบŠเป‰เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบชเบฐเบซเบฐเบžเบฑเบ™เบœเบนเป‰เปƒเบŠเป‰.

SSO เบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบˆเบธเบฅเบฐเบžเบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ Keycloak. เบชเปˆเบงเบ™ #1

เบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เบœเปˆเบฒเบ™เบ—เบฒเบ‡เบœเปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰ - เบ–เป‰เบฒเบœเบนเป‰เปƒเบŠเป‰เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Kerberos (LDAP เบซเบผเบท AD), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบ–เบทเบเบขเบทเบ™เบขเบฑเบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบเบฑเบš Keycloak เป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เปƒเบชเปˆเบŠเบทเปˆเบœเบนเป‰เปƒเบŠเป‰เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡.

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เปเบฅเบฐเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰ DBMS เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡, เป€เบŠเบดเปˆเบ‡เปƒเบŠเป‰เป„เบ”เป‰เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบงเปเบฅเบฐเบเบฒเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, Keycloak เปƒเบŠเป‰ DBMS เปƒเบ™เบ•เบปเบงเป€เบžเบทเปˆเบญเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบฅเบฐเบ‚เปเป‰เบกเบนเบ™เบœเบนเป‰เปƒเบŠเป‰.

เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ DBMS เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปเบกเปˆเบ™เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เปเบฅเบฐเบ›เบฐเบเบญเบšเบกเบต: MS SQL, Oracle, PostgreSQL, MariaDB, Oracle เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เบกเบฒเบฎเบญเบ”เบ›เบฐเบˆเบธเบšเบฑเบ™เปเบกเปˆเบ™ Oracle 12C Release1 RAC เปเบฅเบฐ Galera 3.12 cluster เบชเปเบฒเบฅเบฑเบš MariaDB 10.1.19.

เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบฅเบฐเบšเบธเบ•เบปเบงเบ•เบปเบ™ - เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบชเบฑเบ‡เบ„เบปเบก

เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบˆเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบชเบฑเบ‡เบ„เบปเบก. เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบœเบนเป‰เปƒเบŠเป‰, เปƒเบŠเป‰ Keycloack admin console. เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฅเบฐเบซเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบกเปˆเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เปเบฅเบฐเบซเบ™เป‰เบฒเบ—เบตเปˆเบ™เบตเป‰เบกเบตเบขเบนเปˆเปƒเบ™เบเปˆเบญเบ‡เปเบฅเบฐเบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เปƒเบŠเป‰เป„เบ”เป‰เปƒเบ™เบ—เบธเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™.

SSO เบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบˆเบธเบฅเบฐเบžเบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ Keycloak. เบชเปˆเบงเบ™ #1

เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰ OpenID/SAML Identity เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เบœเบนเป‰เปƒเบŠเป‰.

เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ—เบปเปˆเบงเป„เบ›เป‚เบ”เบเปƒเบŠเป‰ OAuth2 เปƒเบ™ Keycloak

เบเบฐเปเบชเบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” - เปƒเบŠเป‰เบเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ‚เป‰เบฒเบ‡เป€เบŠเบตเบšเป€เบงเบต. เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ›เบฐเป€เบžเบ”เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเบ”เบตเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบŠเบตเบŸเป€เบงเบตเบ—เบตเปˆเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบ‚เปเป‰เบกเบนเบ™เบฅเบนเบเบ„เป‰เบฒเบšเปเปˆเบกเบตเปƒเบซเป‰เบ„เบปเบ™เบžเบฒเบเบ™เบญเบ. เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ•เป‰เบญเบ‡เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เปเปˆเบชเบทเปˆเบชเบฒเบ™เบเบฑเบšเบ•เบปเบงเปเบ—เบ™เบœเบนเป‰เปƒเบŠเป‰ (เบœเบนเป‰เปƒเบŠเป‰ - เบ•เบปเบงเปเบ—เบ™), เป€เบŠเบฑเปˆเบ™: เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบš - เป€เบžเบทเปˆเบญเบฎเบฑเบšเบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” API เบ—เบตเปˆเป‚เบญเบ™เบœเปˆเบฒเบ™เบ•เบปเบงเปเบ—เบ™เบœเบนเป‰เปƒเบŠเป‰.

เป„เบซเบผ implicit โ€” เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เป‚เบ—เบฅเบฐโ€‹เบชเบฑเบšโ€‹เบกเบทโ€‹เบ–เบทโ€‹เบซเบผเบทโ€‹เป€เบงเบฑเบšโ€‹เป„เบŠโ€‹เบ•โ€‹เปŒ (เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹เบ—เบตเปˆโ€‹เปเบฅเปˆเบ™โ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบญเบธโ€‹เบ›เบฐโ€‹เบเบญเบ™โ€‹เบ‚เบญเบ‡โ€‹เบœเบนเป‰โ€‹เปƒเบŠเป‰โ€‹)โ€‹.

เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปเบšเบš implicit เปเบกเปˆเบ™เปƒเบŠเป‰เป‚เบ”เบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบกเบทเบ–เบท เปเบฅเบฐเป€เบงเบฑเบšเบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเบฅเบฑเบšเบ‚เบญเบ‡เบฅเบนเบเบ„เป‰เบฒเป„เบ”เป‰. เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” implicit เบเบฑเบ‡เปƒเบŠเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ•เบปเบงเปเบ—เบ™เบœเบนเป‰เปƒเบŠเป‰, เป€เบŠเบดเปˆเบ‡ token เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบ•เบปเบงเปเบ—เบ™เบœเบนเป‰เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ•เปเปˆเป„เบ›. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰ token เบกเบตเปƒเบซเป‰เบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เปเบฅเบฐเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบญเบทเปˆเบ™เป†เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰. เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบขเบทเบ™เบขเบฑเบ™เบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เปเบฅเบฐเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆ URL เบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ (เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™).

Implicit Flow เบšเปเปˆเบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ token refresh token.

เบเบฐเปเบชเบเบฒเบ™เปƒเบซเป‰เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบˆเบณเบ•เบปเบงเบฅเบนเบเบ„เป‰เบฒ โ€” เปƒเบŠเป‰เป€เบกเบทเปˆเบญเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ API. เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ™เบตเป‰เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบกเปˆเบ™เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบ•เป‰เบญเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบžเบทเป‰เบ™เบซเบฅเบฑเบ‡เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบœเบนเป‰เปƒเบŠเป‰เบ—เบฑเบ™เบ—เบตเบ—เบฑเบ™เปƒเบ”. เบเบฐเปเบชเบเบฒเบ™เปƒเบซเป‰เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบˆเปเบฒเบ•เบปเบงเบฅเบนเบเบ„เป‰เบฒเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป€เบงเบฑเบš (เบฅเบนเบเบ„เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบฅเบฑเบš) เปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบˆเปเบฒเบ•เบปเบงเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบ›เบญเบกเบ•เบปเบงเป€เบ›เบฑเบ™เบœเบนเป‰เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป‚เบ—เบซเบฒเบšเปเบฅเบดเบเบฒเบ™เป€เบงเบฑเบšเบญเบทเปˆเบ™. เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบ”เบฑเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ—เบตเปˆเบชเบนเบ‡เบ‚เบถเป‰เบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป‚เบ—เบซเบฒเป€เบžเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™ (เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบฅเบฑเบšเบ—เบตเปˆเปเบšเปˆเบ‡เบ›เบฑเบ™) เป€เบ›เบฑเบ™เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบˆเปเบฒ.

เบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเป€เบžเบฒเบฐ OAuth2 เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™
RFC-6749
RFC-8252
RFC-6819

JWT token เปเบฅเบฐเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡เบกเบฑเบ™

JWT (JSON Web Token) เปเบกเปˆเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เป€เบ›เบตเบ” (https://tools.ietf.org/html/rfc7519), เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ”เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบซเบ™เบฒเปเบซเบ™เป‰เบ™เปเบฅเบฐเป€เบ›เบฑเบ™เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เปƒเบ™เบเบฒเบ™เป‚เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเปˆเบฒเบเบ•เปˆเบฒเบ‡เป†เบขเปˆเบฒเบ‡เบ›เบญเบ”เป„เบžเปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ JSON.

เบญเบตเบ‡เบ•เบฒเบกเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, token เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบชเบฒเบกเบชเปˆเบงเบ™เปƒเบ™เบฎเบนเบšเปเบšเบš base-64, เปเบเบเป‚เบ”เบเบˆเบธเบ”. เบชเปˆเบงเบ™เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒ header, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ token เปเบฅเบฐเบŠเบทเปˆเบ‚เบญเบ‡ hash algorithm เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบฅเบฒเบเป€เบŠเบฑเบ™เบ”เบดเบˆเบดเบ•เบญเบ™. เบชเปˆเบงเบ™เบ—เบตเบชเบญเบ‡เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™ (เบœเบนเป‰เปƒเบŠเป‰, เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ, เปเบฅเบฐเบญเบทเปˆเบ™เป†). เบชเปˆเบงเบ™เบ—เบตเบชเบฒเบกเปเบกเปˆเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เบ”เบดเบˆเบดเบ•เบญเบ™.

. .
เบขเปˆเบฒเป€เบเบฑเบš token เปƒเบ™ DB เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ token เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เปเบกเปˆเบ™เบ—เบฝเบšเป€เบ—เบปเปˆเบฒเบเบฑเบšเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™, เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ token เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เป€เบ›เบฑเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบˆเบฐเปเบˆเป‰เบ‡.
เป‚เบ—เป€เบ„เบฑเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ เป€เบ›เบฑเบ™ token เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบ‚เบญเบ‡เบ•เบปเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบญเบ”เป„เบž. เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบกเบฑเบ™เบกเบตเบญเบฒเบเบธเบชเบฑเป‰เบ™เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบŠเบฑเปˆเบ™: เบ—เบตเปˆเบขเบนเปˆ IP เบ‚เบญเบ‡เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเปˆเบฎเป‰เบญเบ‡เบ‚เป token.

เป‚เบซเบผเบ”เป‚เบ—เป€เบ„เบฑเบ™เบ„เบทเบ™เปƒเปเปˆ เป€เบ›เบฑเบ™ token เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบฅเบนเบเบ„เป‰เบฒเบชเบฒเบกเบฒเบ”เบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบกเบต tokens เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เปƒเบซเบกเปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบญเบฒเบเบธเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบซเบกเบปเบ”เบญเบฒเบเบธ. เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบง tokens เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบญเบญเบเป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™.

เบ‚เปเป‰เป„เบ”เป‰เบ›เบฝเบšเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบˆเบธเบฅเบฐเบžเบฒเบ:

  • เบ„เบงเบฒเบกโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹เบ•เปˆเบฒเบ‡เป†โ€‹เป‚เบ”เบโ€‹เบœเปˆเบฒเบ™โ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบ„เบฑเป‰เบ‡โ€‹เบ”เบฝเบงโ€‹.
  • เปƒเบ™เป€เบกเบทเปˆเบญเบšเปเปˆเบกเบตเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เป‚เบ›เบฃเป„เบŸเบฅเปŒเบœเบนเป‰เปƒเบŠเป‰, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™ payload, เบฅเบงเบกเบ—เบฑเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบฅเบฐเปƒเบ™เบเบฒเบ™เบšเบดเบ™.
  • เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง, เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบŠเบตเบŸเป€เบงเบตเบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบฅเบฒเบเป€เบŠเบฑเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.
  • เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบซเบผเบฒเบเป‚เบ”เบเบœเปˆเบฒเบ™เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™ payload.
  • เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบฅเบฒเบเป€เบŠเบฑเบ™ token เบชเปเบฒเบฅเบฑเบš header เปเบฅเบฐ payload เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบฑเบ‡เบซเบกเบปเบ”.

JWT token - เบญเบปเบ‡เบ›เบฐเบเบญเบš

เบซเบปเบงเบซเบ™เป‰เบฒ - เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, header เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ token เปเบฅเบฐ algorithm เบ—เบตเปˆเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”.

เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ token เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบ›เบธเปˆเบก "เบžเบดเบก". เบ›เบธเปˆเบก 'เบ›เบฐเป€เบžเบ”' เปเบกเปˆเบ™เบ–เบทเบเบฅเบฐเป€เบฅเบตเบเบขเบนเปˆเปƒเบ™ JWT. เบ–เป‰เบฒเบ›เบธเปˆเบก "เบžเบดเบก" เบ›เบฒเบเบปเบ”, เบ„เปˆเบฒเบ‚เบญเบ‡เบกเบฑเบ™เบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™ JWT เป€เบžเบทเปˆเบญเบŠเบตเป‰เบšเบญเบเบงเปˆเบฒเบงเบฑเบ”เบ–เบธเบ™เบตเป‰เปเบกเปˆเบ™ JSON Web Token.

เบ„เบตเบ—เบตเบชเบญเบ‡ "alg" เบฅเบฐเบšเบธเบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ—เบตเปˆเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” token. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™ HS256. เบชเปˆเบงเบ™เบซเบปเบงเบ–เบทเบเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปƒเบ™ base64.

{ "alg": "HS256", "typ": "JWT"}
payload (เป€เบ™เบทเป‰เบญเปƒเบ™) - payload เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เปƒเบ”เป†เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบš. เปเบ•เปˆเบฅเบฐเบเบฐเปเบˆเปƒเบ™ payload เป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเป€เบ›เบฑเบ™ "เบเบฒเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡". เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบžเบฝเบ‡เปเบ•เปˆเป‚เบ”เบเบเบฒเบ™เป€เบŠเบทเป‰เบญเป€เบŠเบตเบ™ (เบ›เบดเบ” promo). เป€เบกเบทเปˆเบญโ€‹เป€เบฎเบปเบฒโ€‹เบขเบฒเบโ€‹เป€เบŠเบตเบ™โ€‹เบœเบนเป‰โ€‹เปƒเบ”โ€‹เบœเบนเป‰โ€‹เปœเบถเปˆเบ‡โ€‹เปƒเบซเป‰โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบฎเปˆเบงเบก, เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เบชเบปเปˆเบ‡โ€‹เบˆเบปเบ”เปเบฒเบโ€‹เป€เบŠเบตเบ™โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒ. เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ—เบตเปˆเบขเบนเปˆเบญเบตเป€เบกเบงเป€เบ›เบฑเบ™เบ‚เบญเบ‡เบœเบนเป‰เบ—เบตเปˆเบเบญเบกเบฎเบฑเบšเบเบฒเบ™เป€เบŠเบทเป‰เบญเป€เบŠเบตเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบฅเบงเบกเป€เบญเบปเบฒเบ—เบตเปˆเบขเบนเปˆเบ™เบตเป‰เป€เบ‚เบปเป‰เบฒเปƒเบ™ payload, เบชเปเบฒเบฅเบฑเบšเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™ "เบญเบตเป€เบกเบง" เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™.

{ "เบญเบตเป€เบกเบง": "[email protected]"}

เบเบฐเปเบˆเปƒเบ™ payload เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™ arbitrary. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบตเบเบฒเบ™เบชเบฐเบซเบ‡เบงเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบ:

  • iss (Issuer) - เบเปเบฒเบ™เบปเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆ token เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›.
  • sub (Subject) - เบเปเบฒเบ™เบปเบ”เบซเบปเบงเบ‚เปเป‰เบ‚เบญเบ‡ token.
  • aud (เบœเบนเป‰เบŠเบปเบก) เปเบกเปˆเบ™ array เบ‚เบญเบ‡ strings เบ—เบตเปˆเบฅเบฐเบญเบฝเบ”เบญเปˆเบญเบ™เบ•เบปเบงเบžเบดเบกเบ™เป‰เบญเบ เบซเบผเบท URIs เบ—เบตเปˆเป€เบ›เบฑเบ™เบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบœเบนเป‰เบฎเบฑเบšเบ‚เบญเบ‡ token เบ™เบตเป‰. เป€เบกเบทเปˆเบญเบเปˆเบฒเบเบฎเบฑเบšเป„เบ”เป‰เบฎเบฑเบš JWT เบ”เป‰เบงเบเบเบฐเปเบˆเบ—เบตเปˆเปƒเบซเป‰, เบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบงเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบกเบตเบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบขเบนเปˆเปƒเบ™เบœเบนเป‰เบฎเบฑเบš - เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบšเปเปˆเบชเบปเบ™เปƒเบˆ token.
  • exp (เป€เบงเบฅเบฒเบซเบกเบปเบ”เบญเบฒเบเบธ) - เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ token เบซเบกเบปเบ”เบญเบฒเบเบธ. เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ JWT เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบกเบฑเบ™เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเป€เบชเบ” token เบ—เบตเปˆเบซเบกเบปเบ”เบญเบฒเบเบธ. เบฅเบฐเบซเบฑเบ” exp เบˆเบฐเบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™ timestamp เปƒเบ™เบฎเบนเบšเปเบšเบš unix.
  • nbf (เบšเปเปˆเบเปˆเบญเบ™) เปเบกเปˆเบ™เป€เบงเบฅเบฒเปƒเบ™เบฎเบนเบšเปเบšเบš unix เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ—เบตเปˆ token เบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡.
  • iat (เบญเบญเบเบ—เบตเปˆ) - เบฅเบฐเบซเบฑเบ”เบ™เบตเป‰เบชเบฐเปเบ”เบ‡เป€เบ–เบดเบ‡เป€เบงเบฅเบฒเบ—เบตเปˆเบญเบญเบ token เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบญเบฒเบเบธเบ‚เบญเบ‡ JWT. เบฅเบฐเบซเบฑเบ” iat เบˆเบฐเบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™ timestamp เปƒเบ™เบฎเบนเบšเปเบšเบš unix.
  • Jti (JWT ID) โ€” เบชเบฐเบ•เบฃเบดเบ‡เบ—เบตเปˆเบเบณเบ™เบปเบ”เบ•เบปเบงเบฅเบฐเบšเบธเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เป‚เบ—เป€เบ„เบฑเบ™เบ™เบตเป‰, เป‚เบ•เบžเบดเบกเบ™เป‰เบญเบเปƒเบซเบเปˆ.

เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒ payload เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” (เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ tokens เบชเบฒเบกเบฒเบ”เบ–เบทเบเบงเบฒเบ‡เป„เบงเป‰เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบเปเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ–เบทเบเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”). เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบฅเบฑเบšเปƒเบ”เป†เบขเบนเปˆเปƒเบ™เบกเบฑเบ™. เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš header, payload เปเบกเปˆเบ™ base64 encoded.
เบฅเบฒเบเป€เบŠเบฑเบ™ - เป€เบกเบทเปˆเบญเป€เบฎเบปเบฒเบกเบตเบซเบปเบงเบ‚เปเป‰ เปเบฅเบฐ เบˆเปˆเบฒเบเปเบฅเป‰เบง เป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ„เบดเบ”เป„เบฅเปˆเบฅเบฒเบเป€เบŠเบฑเบ™เป„เบ”เป‰.

Base64-encoded: header เปเบฅเบฐ payload เบ–เบทเบเป€เบญเบปเบฒ, เบžเบงเบเบกเบฑเบ™เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป€เบ›เบฑเบ™ string เบœเปˆเบฒเบ™เบˆเบธเบ”. เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบฐเบ•เบฃเบดเบ‡เบ™เบตเป‰ เปเบฅเบฐเบเบฐเปเบˆเบฅเบฑเบšเบˆเบฐเบ–เบทเบเบ›เป‰เบญเบ™เป€เบ‚เบปเป‰เบฒเปƒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบชเปˆเบงเบ™เบซเบปเบง (เบ›เบธเปˆเบก "alg"). เบ›เบธเปˆเบกเบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบชเบฒเบเปƒเบ”เบเปเป„เบ”เป‰. เบชเบฒเบเบ—เบตเปˆเบเบฒเบงเบเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เบ—เบตเปˆเบ™เบดเบเบปเบกเบ—เบตเปˆเบชเบธเบ”เป€เบžเบฒเบฐเบกเบฑเบ™เบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒ.

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

เบเบฒเบ™เบชเป‰เบฒเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ Keycloak Failover Cluster

เป€เบกเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰เบเบธเปˆเบกเบ”เบฝเบงเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เบกเบตเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚ SSO. เป€เบกเบทเปˆเบญเบˆเปเบฒเบ™เบงเบ™เป‚เบ„เบ‡เบเบฒเบ™เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ, เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบšเปเปˆเบชเปเบฒเบ„เบฑเบ™เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบˆเปเบฒเบ™เบงเบ™เบœเบนเป‰เปƒเบŠเป‰เปเบฅเบฐเบเบฒเบ™เบฅเบงเบกเบ•เบปเบงเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™, เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบกเบตเปเบฅเบฐเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™.

เบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ‚เบญเบ‡เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบงเบ‚เบญเบ‡ SSO เบ”เบฝเบงเป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบเบฒเบ™เปเบเป‰เป„เบ‚เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบŠเป‰เปเบฒเบŠเป‰เบญเบ™เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเปเบฅเบฐเบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™ SLA เบ—เบตเปˆเป€เบ„เบฑเปˆเบ‡เบ„เบฑเบ”เบซเบผเบฒเบ. เปƒเบ™เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰, เป€เบฅเบทเป‰เบญเบเป†เปƒเบ™เป„เบฅเบเบฐเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเบผเบทเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปเบเป‰เป„เบ‚, เป‚เบ„เบ‡เบเบฒเบ™เบ•เปˆเบฒเบ‡เป†เบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบšเปเปˆเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เป€เบกเบทเปˆเบญโ€‹เบเบฒเบ™โ€‹เบžเบฑเบ”โ€‹เบ—เบฐโ€‹เบ™เบฒโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบ„เบทเบšโ€‹เบซเบ™เป‰เบฒ, เบกเบฑเบ™โ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบชเป‰เบฒเบ‡โ€‹เบเบฒโ€‹เบฅเบฐโ€‹เป‚เบญโ€‹เบเบฒเบ”โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบžเบฑเบ”โ€‹เบ—เบฐโ€‹เบ™เบฒโ€‹เปเบฅเบฐโ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบ•เบปเบง. เบงเบดเบ—เบตเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบธเปˆเบกเบ—เบตเปˆเบฅเบปเป‰เบกเป€เบซเบฅเบงเปเบกเปˆเบ™เบเบฒเบ™เปƒเบŠเป‰ container virtualization เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบชเบปเบก.

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป‚เบซเบกเบ”เบเบธเปˆเบก Active/Active เปเบฅเบฐ Active/Passive, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡ - เบ—เบฑเบ‡เบชเบญเบ‡ nodes เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™ synchronously replicated เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™ geo-distributed เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ—เบตเปˆเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”.

SSO เบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบˆเบธเบฅเบฐเบžเบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ Keycloak. เบชเปˆเบงเบ™ #1

เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบธเปˆเบกเบ”เบฝเบงเบกเบตเบซเบเบฑเบ‡เปเบ”เปˆ:

  • เบกเบตเปเบฅเบฐเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡.
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™: Active / Active, Active / Passive.
  • เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง - เป€เบกเบทเปˆเบญเปƒเบŠเป‰ container virtualization.
  • เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เปเบฅเบฐเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบˆเบฒเบเบชเบนเบ™เบเบฒเบ‡.
  • เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบžเบฒเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ” / เบเบฒเบ™เบเบงเบ”เบชเบญเบš / เบญเบฐเบ™เบธเบเบฒเบ”เบœเบนเป‰เปƒเบŠเป‰เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™.
  • เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ—เบตเปˆเป‚เบ›เปˆเบ‡เปƒเบชเบซเบผเบฒเบเบ‚เบถเป‰เบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰.
  • เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰ JWT token เบ„เบทเบ™เปƒเปเปˆเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ•เปˆเบฒเบ‡เป†.
  • เบˆเบธเบ”เบ”เบฝเบงเบ‚เบญเบ‡เบ„เบงเบฒเบกเป„เบงเป‰เบงเบฒเบ‡เปƒเบˆ.
  • เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเป‚เบ„เบ‡เบเบฒเบ™เป„เบงเบ‚เบถเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰ microservices/container virtualization (เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ•เบดเบ”เบ•เบฑเป‰เบ‡ เปเบฅเบฐ configure เบญเบปเบ‡เบ›เบฐเบเบญเบšเป€เบžเบตเปˆเบกเป€เบ•เบตเบก).
  • เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบŠเบทเป‰เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ—เบฒเบ‡เบเบฒเบ™เบ„เป‰เบฒเบˆเบฒเบเบœเบนเป‰เบ‚เบฒเบ.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบŠเบญเบเบซเบฒเปƒเบ™เป€เบงเบฅเบฒเบงเบฒเบ‡เปเบœเบ™เบเบธเปˆเบก

DBMS

Keycloak เปƒเบŠเป‰เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบฎเบฑเบเบชเบฒ: realms, เบฅเบนเบเบ„เป‰เบฒ, เบœเบนเป‰เปƒเบŠเป‰, เปเบฅเบฐเบญเบทเปˆเบ™เป†.
เบฅเบฐเบ”เบฑเบšเบ„เบงเบฒเบกเบเป‰เบงเบฒเบ‡เบ‚เบญเบ‡ DBMS เปเบกเปˆเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™: MS SQL, Oracle, MySQL, PostgreSQL. Keycloak เบกเบฒเบžเป‰เบญเบกเบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ„เบงเบฒเบกเบชเปเบฒเบžเบฑเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบกเบฑเบ™เปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เป‚เบซเบผเบ” - เป€เบŠเบฑเปˆเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ.

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป‚เบซเบกเบ”เบเบธเปˆเบก Active/Active เปเบฅเบฐ Active/Passive, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เปเบฅเบฐเบ—เบฑเบ‡เบชเบญเบ‡ nodes เบ‚เบญเบ‡ cluster เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™ synchronously replicated เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™.

เปเบ„เบ”เปเบˆเบเบขเบฒเบ (Infinspan)

เป€เบžเบทเปˆเบญเปƒเบซเป‰เบเบธเปˆเบกเป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡, เบเบฒเบ™เบŠเบดเป‰เบ‡เบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเบณเบ•เปเปˆเป„เบ›เบ™เบตเป‰เป‚เบ”เบเปƒเบŠเป‰ JBoss Data Grid เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™:

เป€เบŠเบ”เบŠเบฑเบ™เบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™ - เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบšเบฑเบ™เบ—เบถเบเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป€เบงเบฅเบฒเบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เบœเบนเป‰เปƒเบŠเป‰เบชเบฐเป€เบžเบฒเบฐ. เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบˆเบฒเบเบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒเบ™เบตเป‰เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบกเบตเบžเบฝเบ‡เปเบ•เปˆเบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ Keycloak, เบšเปเปˆเปเบกเปˆเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ.

Action tokens เปเบกเปˆเบ™เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เบ•เป‰เบญเบ‡เบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™เบเบฒเบ™เบเบฐ เบ—เบณ เปเบšเบšเบšเปเปˆเบเบปเบ‡เบเบฑเบ™ (เบœเปˆเบฒเบ™เบญเบตเป€เบกเบง). เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบทเบกเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™, cache actionTokens Infinispan เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฒเบก metadata เบเปˆเบฝเบงเบเบฑเบš tokens เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปเบฅเป‰เบง, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบ„เบทเบ™เป„เบ”เป‰.

Caching เปเบฅเบฐ invalidation เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ„เบปเบ‡เบ—เบตเปˆ - เปƒเบŠเป‰เป€เบžเบทเปˆเบญ cache เบ‚เปเป‰เบกเบนเบ™เบ„เบปเบ‡เบ—เบตเปˆเป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เป€เบกเบทเปˆเบญเป€เบŠเบตเบšเป€เบงเบต Keycloak เปƒเบ”เบญเบฑเบšเป€เบ”เบ”เบ‚เปเป‰เบกเบนเบ™, เป€เบŠเบตเบšเป€เบงเบต Keycloak เบญเบทเปˆเบ™เป†เบ—เบฑเบ‡เปเบปเบ”เปƒเบ™เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เปเบปเบ”เบ•เป‰เบญเบ‡เบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™.

เบงเบฝเบ - เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡ nodes cluster เปเบฅเบฐเบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

เป€เบŠเบ”เบŠเบฑเบ™เบœเบนเป‰เปƒเบŠเป‰ - เปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เป€เบŠเบ”เบŠเบฑเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบชเปเบฒเบฅเบฑเบšเป„เบฅเบเบฐเป€เบงเบฅเบฒเบ‚เบญเบ‡เป€เบŠเบ”เบŠเบฑเบ™เบ‚เบญเบ‡เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰. cache เบ•เป‰เบญเบ‡เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป HTTP เบˆเบฒเบเบœเบนเป‰เปƒเบŠเป‰เบชเบธเบ”เบ—เป‰เบฒเบเปเบฅเบฐเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™.

Brute force protection - เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฒเบกเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบ—เบตเปˆเบฅเบปเป‰เบกเป€เบซเบฅเบง.

เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”

เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เปเบกเปˆเบ™เบˆเบธเบ”เป€เบ‚เบปเป‰เบฒเบ”เบฝเบงเบ•เปเปˆเบเบฑเบš keycloak เปเบฅเบฐเบ•เป‰เบญเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบญเบ‡เบ›เบฐเบŠเบธเบกเบซเบ™เบฝเบง.

เป€เบŠเบตเบšเป€เบงเบตเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™

เบžเบงเบเบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเป€เบŠเบดเปˆเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™เปเบฅเบฐเบชเบฒเบกเบฒเบ” virtualized เบซเบผเบท containerized เป‚เบ”เบเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™. เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบธเบ”เปƒเบ™ OpenShift, Kubernates, Rancher.

เบ™เบตเป‰เป€เบฎเบฑเบ”เบชเปเบฒเป€เบฅเบฑเบ”เบชเปˆเบงเบ™เบ—เปเบฒเบญเบดเบ” - เบ—เบดเบ”เบชเบฐเบ”เบต. เปƒเบ™เบŠเบธเบ”เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบกเบ•เปเปˆเป„เบ›เบ™เบตเป‰, เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบšเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบฅเบฐเบšเบธเบ•เบปเบงเบ•เบปเบ™เบ•เปˆเบฒเบ‡เป†เปเบฅเบฐเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบˆเบฐเบ–เบทเบเบ›เบถเบเบชเบฒเบซเบฒเบฅเบท.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™