ΠΡΠ² Π²ΡΡΠΊΠ° Π³ΠΎΠ»ΡΠΌΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΈ X5 Retail Group Π½Π΅ Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°, Π±ΡΠΎΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°. Π‘ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π±Π΅Π·ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅Π½ ΠΏΡΠ΅Ρ ΠΎΠ΄ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΎΡ Π΅Π΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌ Π΄ΡΡΠ³ΠΎ ΠΈ ΡΠΎΠ³Π°Π²Π° ΠΈΠΌΠ° Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ΅Π½ ΡΡΡΠ²ΡΡ Π·Π° Π΅Π΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ Π²Π»ΠΈΠ·Π°Π½Π΅ (SSO). ΠΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠΎΠ³Π°ΡΠΎ Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡ ΠΊΠ°ΡΠΎ AD ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½ΡΠΌΠ°Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈ, Π²Π΅ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ. ΠΠ»Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠΈ, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈ "ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π±ΡΠΎΠΊΠ΅ΡΠΈ", ΡΠ΅ ΡΠ΅ ΠΏΡΠΈΡΠ΅ΠΊΠ°Ρ Π½Π° ΠΏΠΎΠΌΠΎΡ. ΠΠ°ΠΉ-ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈΡΠ΅ ΡΠ° Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΠ΅Π»ΠΈ, ΠΊΠ°ΡΠΎ Keycloak, Gravitee Access management ΠΈ Π΄Ρ. ΠΠ°ΠΉ-ΡΠ΅ΡΡΠΎ ΡΠ»ΡΡΠ°ΠΈΡΠ΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ: Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΌΠ°ΡΠΈΠ½Π°ΡΠ°, ΡΡΠ°ΡΡΠΈΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΈ Π΄Ρ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π³ΡΠ²ΠΊΠ°Π²Π° ΠΈ ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ° Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ Π² Π΅Π΄Π½ΠΎ, ΠΈ ΡΠ°ΠΊΠΈΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π°ΡΠ°ΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Π²Π΅ΡΠ΅ ΠΈΠΌΠ° Π±ΡΠΎΠΊΠ΅Ρ Π·Π° ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΠΈ - Keycloak.
Keycloak Π΅ ΠΏΡΠΎΠ΄ΡΠΊΡ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π΄ΠΎΡΡΡΠΏΠ°, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ ΠΎΡ RedHat. Π’ΠΎΠΉ Π΅ Π² ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ SSO - RH-SSO.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΠΎΠ½ΡΡΠΈΡ
ΠΡΠ΅Π΄ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΡΠ΅ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° Π²Π·Π΅ΠΌΠ΅ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡΡΠ° ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅:
ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π·Π° ΡΠ°Π·ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ Π½Π° ΡΡΠ±Π΅ΠΊΡ ΡΡΠ΅Π· Π½Π΅Π³ΠΎΠ²ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ (Ρ Π΄ΡΡΠ³ΠΈ Π΄ΡΠΌΠΈ, ΡΠΎΠ²Π° Π΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ΠΈΠΌΠ΅, Π²Ρ
ΠΎΠ΄ ΠΈΠ»ΠΈ Π½ΠΎΠΌΠ΅Ρ).
Π·Π°Π²Π΅ΡΠΊΠ° - ΡΠΎΠ²Π° Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ (ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Ρ ΠΏΠ°ΡΠΎΠ»Π°, ΠΏΠΈΡΠΌΠΎΡΠΎ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Ρ Π΅Π»Π΅ΠΊΡΡΠΎΠ½Π΅Π½ ΠΏΠΎΠ΄ΠΏΠΈΡ ΠΈ Ρ.Π½.)
Π£ΠΏΡΠ»Π½ΠΎΠΌΠΎΡΠ°Π²Π°Π½Π΅ - ΡΠΎΠ²Π° Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅ΡΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄ΠΎ Π΅Π»Π΅ΠΊΡΡΠΎΠ½Π½Π° ΠΏΠΎΡΠ°).
Identity Broker Keycloak
ΠΊΠ»ΡΡΠΎΠ΄ΡΡΠΆΠ°ΡΠ΅Π» Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡ ΠΈ Π΄ΠΎΡΡΡΠΏ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² IS, ΠΊΡΠ΄Π΅ΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ.
Keycloak ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΡΠΎ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎ Π²Π»ΠΈΠ·Π°Π½Π΅ (SSO), ΡΠ°ΠΌΠΎΠ»ΠΈΡΠ½ΠΎΡΡ Ρ ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊ ΠΈ ΡΠΎΡΠΈΠ°Π»Π½ΠΎ Π²Π»ΠΈΠ·Π°Π½Π΅, ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠ° ΡΠ΅Π΄Π΅ΡΠ°ΡΠΈΡ, ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ Π°Π΄Π°ΠΏΡΠ΅ΡΠΈ, ΠΊΠΎΠ½Π·ΠΎΠ»Π° Π·Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΠΈ ΠΊΠΎΠ½Π·ΠΎΠ»Π° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π°ΠΊΠ°ΡΠ½ΡΠΈ.
ΠΡΠ½ΠΎΠ²Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π° ΠΎΡ Keycloak:
- ΠΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ Π²Π»ΠΈΠ·Π°Π½Π΅ ΠΈ Π΅Π΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ Π·Π° Π±ΡΠ°ΡΠ·ΡΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° OpenID/OAuth 2.0/SAML.
- Identity Brokering - ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π²ΡΠ½ΡΠ½ΠΈ Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈ Π½Π° OpenID Connect ΠΈΠ»ΠΈ SAML ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡ.
- Π‘ΠΎΡΠΈΠ°Π»Π½ΠΎ Π²Π»ΠΈΠ·Π°Π½Π΅ - Google, GitHub, Facebook, Twitter ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ.
- User Federation - ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΠΎΡ LDAP ΠΈ Active Directory ΡΡΡΠ²ΡΡΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡ.
- Kerberos ΠΌΠΎΡΡ - ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Kerberos ΡΡΡΠ²ΡΡ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ.
- Admin Console - Π·Π° ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ ΠΈ ΠΎΠΏΡΠΈΠΈΡΠ΅ Π·Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π· ΡΠ΅Π±.
- ΠΠΎΠ½Π·ΠΎΠ»Π° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π°ΠΊΠ°ΡΠ½ΡΠΈ - Π·Π° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠΈΠ».
- ΠΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½Π°ΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ°.
- 2FA ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ - ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° TOTP/HOTP Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Google Authenticator ΠΈΠ»ΠΈ FreeOTP.
- ΠΠΎΡΠΎΡΠΈ Π·Π° Π²Π»ΠΈΠ·Π°Π½Π΅ - Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ ΡΠ° ΡΠ°ΠΌΠΎΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ ΠΈ Π½ΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΡΠΎΠ»Π° ΠΈ Π΄ΡΡΠ³ΠΈ.
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΠΈΠΈ - Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΡΠ΅ΡΠΈΠΈ ΠΎΡ Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ°.
- Token Mappers - ΠΎΠ±Π²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈ, ΡΠΎΠ»ΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈ ΠΊΡΠΌ ΡΠΎΠΊΠ΅Π½ΠΈ.
- ΠΡΠ²ΠΊΠ°Π²ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π² ΠΎΠ±Π»Π°ΡΡΡΠ°, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° CORS - ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡΠ΅ Π°Π΄Π°ΠΏΡΠ΅ΡΠΈ ΠΈΠΌΠ°Ρ Π²Π³ΡΠ°Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° CORS.
- ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π½Π° Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈ Π½Π° ΡΡΠ»ΡΠ³ΠΈ (SPI) - Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ SPI, ΠΊΠΎΠΈΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π°ΡΠΏΠ΅ΠΊΡΠΈ Π½Π° ΡΡΡΠ²ΡΡΠ°: ΠΏΠΎΡΠΎΡΠΈ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅, Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡ, ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ ΠΈ Π΄Ρ.
- ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ Π°Π΄Π°ΠΏΡΠ΅ΡΠΈ Π·Π° 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
Java API
ΠΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΈ Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡ (Π»ΠΎΠΊΠ°Π»Π½ΠΈ)
ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΡΡΠ΅Π· ΡΡΠ»ΡΠ³ΠΈ Π·Π° ΡΠ΅Π΄Π΅ΡΠ°ΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅.
ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ ΡΡΠ΅Π· ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ - Π°ΠΊΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΡΠ΅ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ ΡΡΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΡΡΠ°Π½ΡΠΈΠΈ Ρ Kerberos (LDAP ΠΈΠ»ΠΈ AD), ΡΠΎΠ³Π°Π²Π° ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ Π² Keycloak, Π±Π΅Π· Π΄Π° ΡΠ΅ Π½Π°Π»Π°Π³Π° Π΄Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΡΠΈ ΠΈΠΌΠ΅ ΠΈ ΠΏΠ°ΡΠΎΠ»Π° ΠΎΡΠ½ΠΎΠ²ΠΎ.
ΠΠ° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ ΠΈ ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½ΠΎ ΠΎΡΠΎΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½Π° Π‘Π£ΠΠ, ΠΊΠΎΡΡΠΎ Π΅ Π½Π°ΠΉ-ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠ° Π·Π° ΡΡΠ΅Π΄ΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π½Π΅ Π²ΠΊΠ»ΡΡΠ²Π° Π΄ΡΠ»Π³ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π² ΡΠ°Π½Π½ΠΈΡΠ΅ Π΅ΡΠ°ΠΏΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Keycloak ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²Π³ΡΠ°Π΄Π΅Π½Π° Π‘Π£ΠΠ Π·Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ.
Π‘ΠΏΠΈΡΡΠΊΡΡ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈΡΠ΅ Π‘Π£ΠΠ Π΅ ΠΎΠ±ΡΠΈΡΠ΅Π½ ΠΈ Π²ΠΊΠ»ΡΡΠ²Π°: MS SQL, Oracle, PostgreSQL, MariaDB, Oracle ΠΈ Π΄ΡΡΠ³ΠΈ. ΠΠ°ΠΉ-ΡΠ΅ΡΡΠ²Π°Π½ΠΈΡΠ΅ Π΄ΠΎΡΠ΅Π³Π° ΡΠ° Oracle 12C Release1 RAC ΠΈ Galera 3.12 ΠΊΠ»ΡΡΡΠ΅Ρ Π·Π° MariaDB 10.1.19.
ΠΠΎΡΡΠ°Π²ΡΠΈΡΠΈ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡ - ΡΠΎΡΠΈΠ°Π»Π΅Π½ Π²Ρ ΠΎΠ΄
ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π²Ρ ΠΎΠ΄ ΠΎΡ ΡΠΎΡΠΈΠ°Π»Π½ΠΈΡΠ΅ ΠΌΡΠ΅ΠΆΠΈ. ΠΠ° Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° Π·Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°Π½Π΅ Π½Π° Keycloack. ΠΠ΅ ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π΅ Π½Π°Π»ΠΈΡΠ½Π° Π²Π΅Π΄Π½Π°Π³Π° ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° Π½Π° Π²ΡΠ΅ΠΊΠΈ Π΅ΡΠ°ΠΏ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈ Π½Π° OpenID/SAML ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ.
Π’ΠΈΠΏΠΈΡΠ½ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π·Π° ΠΎΡΠΎΡΠΈΠ·Π°ΡΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ OAuth2 Π² Keycloak
ΠΠΎΡΠΎΠΊ Π½Π° ΠΊΠΎΠ΄Π° Π·Π° ΠΎΡΠΎΡΠΈΠ·Π°ΡΠΈΡ - ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° ΡΡΡΠ²ΡΡΠ°. ΠΠ΄ΠΈΠ½ ΠΎΡ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΈΡΠ΅ ΡΠΈΠΏΠΎΠ²Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° ΠΎΡΠΎΡΠΈΠ·Π°ΡΠΈΡ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π·Π° ΡΡΡΠ²ΡΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΡΠ΄Π΅ΡΠΎ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π½Π΅ ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π·Π° Π²ΡΠ½ΡΠ½ΠΈ Π»ΠΈΡΠ°. ΠΡΠΎΡΠ΅ΡΡΡ Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π° Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ Π°Π³Π΅Π½Ρ (user-agent), ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅Π± Π±ΡΠ°ΡΠ·ΡΡ - Π·Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π° API ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π·Π° ΠΎΡΠΎΡΠΈΠ·Π°ΡΠΈΡ, ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ΅Π½ΠΈ ΠΏΡΠ΅Π· ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡ Π°Π³Π΅Π½Ρ.
ΠΈΠΌΠΏΠ»ΠΈΡΠΈΡΠ΅Π½ ΠΏΠΎΡΠΎΠΊ - ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΎΡ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ ΠΈΠ»ΠΈ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ).
Π’ΠΈΠΏΡΡ ΠΈΠΌΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΎΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ ΠΈ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΡΠ΄Π΅ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°Π½Π°. Π’ΠΈΠΏΡΡ ΠΈΠΌΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡ Π°Π³Π΅Π½Ρ, ΠΏΡΠΈ ΠΊΠΎΠ΅ΡΠΎ ΠΌΠ°ΡΠΊΠ΅ΡΡΡ Π·Π° Π΄ΠΎΡΡΡΠΏ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡ Π°Π³Π΅Π½Ρ Π·Π° ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. Π’ΠΎΠ²Π° ΠΏΡΠ°Π²ΠΈ ΡΠΎΠΊΠ΅Π½Π° Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. Π’ΠΎΠ·ΠΈ ΡΠΈΠΏ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΎΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π½Π΅ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π° ΡΠ°ΠΌΠΎΠ»ΠΈΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π° ΡΠ°ΠΌΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ ΡΠ°Π·ΡΠΈΡΠ° Π½Π° URL Π°Π΄ΡΠ΅Ρ Π·Π° ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ (ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½ Π² ΡΡΠ»ΡΠ³Π°ΡΠ°).
Implicit Flow Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΌΠ°ΡΠΊΠ΅ΡΠΈ Π·Π° ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏ.
ΠΠΎΡΠΎΠΊ Π·Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° β ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠΌΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ API. Π’ΠΎΠ·ΠΈ ΡΠΈΠΏ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΎΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠ²ΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ Π²ΡΠ² ΡΠΎΠ½ΠΎΠ² ΡΠ΅ΠΆΠΈΠΌ Π±Π΅Π· Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. ΠΠΎΡΠΎΠΊΡΡ Π·Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΡΠ΅Π± ΡΡΠ»ΡΠ³Π° (ΠΏΠΎΠ²Π΅ΡΠΈΡΠ΅Π»Π΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ) Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Ρ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π», Π·Π° Π΄Π° ΡΠ΅ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π° Π΄ΡΡΠ³Π° ΡΠ΅Π± ΡΡΠ»ΡΠ³Π°. ΠΠ° ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π°ΠΆΠ΄Π°ΡΠ°ΡΠ° ΡΠ΅ ΡΡΠ»ΡΠ³Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ (Π²ΠΌΠ΅ΡΡΠΎ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΡΠ°ΠΉΠ½Π°) ΠΊΠ°ΡΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠ΅.
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° OAuth2 Π΅ ΠΎΠΏΠΈΡΠ°Π½Π° Π²
JWT ΡΠΎΠΊΠ΅Π½ ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°
JWT (JSON Web Token) Π΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΡΡΠ°Π½Π΄Π°ΡΡ (
Π‘ΠΏΠΎΡΠ΅Π΄ ΡΡΠ°Π½Π΄Π°ΡΡΠ° ΡΠΎΠΊΠ΅Π½ΡΡ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ ΡΡΠΈ ΡΠ°ΡΡΠΈ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ base-64, ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ Ρ ΡΠΎΡΠΊΠΈ. ΠΡΡΠ²Π°ΡΠ° ΡΠ°ΡΡ ΡΠ΅ Π½Π°ΡΠΈΡΠ° Ρ Π΅Π΄ΡΡ, ΠΊΠΎΠΉΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° ΡΠΈΠΏΠ° Π½Π° ΡΠΎΠΊΠ΅Π½Π° ΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Ρ Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΈΡΡΠΎΠ² ΠΏΠΎΠ΄ΠΏΠΈΡ. ΠΡΠΎΡΠ°ΡΠ° ΡΠ°ΡΡ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ (ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π», Π°ΡΡΠΈΠ±ΡΡΠΈ ΠΈ Π΄Ρ.). Π’ΡΠ΅ΡΠ°ΡΠ° ΡΠ°ΡΡ Π΅ ΡΠΈΡΡΠΎΠ²ΠΈΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡ.
. .
ΠΠΈΠΊΠΎΠ³Π° Π½Π΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°ΠΉΡΠ΅ ΡΠΎΠΊΠ΅Π½ Π²ΡΠ² Π²Π°ΡΠ°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π²Π°Π»ΠΈΠ΄Π΅Π½ ΡΠΎΠΊΠ΅Π½ Π΅ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ Π½Π° ΠΏΠ°ΡΠΎΠ»Π°, ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠΊΠ΅Π½Π° Π΅ ΠΊΠ°ΡΠΎ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΡΠΎΠ»Π°ΡΠ° Π² ΡΠΈΡΡ ΡΠ΅ΠΊΡΡ.
ΠΠ΅ΡΠΎΠ½ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΅ ΡΠΎΠΊΠ΅Π½, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π½Π° ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π·Π°ΡΠΈΡΠ΅Π½ΠΈ ΡΡΡΠ²ΡΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠΌΠ° ΠΊΡΠ°ΡΡΠΊ ΠΆΠΈΠ²ΠΎΡ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½ΠΎΡΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ IP Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΡΡΡΠ°Π½Π°ΡΠ°, ΠΏΠΎΠΈΡΠΊΠ°Π»Π° ΡΠΎΠΊΠ΅Π½Π°.
ΠΠΏΡΠ΅ΡΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠΊΠ΅Π½Π° Π΅ ΡΠΎΠΊΠ΅Π½, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ Π΄Π° ΠΏΠΎΠΈΡΠΊΠ°Ρ Π½ΠΎΠ²ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏ ΡΠ»Π΅Π΄ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΆΠΈΠ²ΠΎΡΠ° ΠΈΠΌ. Π’Π΅Π·ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΠΈΠ·Π΄Π°Π²Π°Ρ Π·Π° Π΄ΡΠ»ΡΠ³ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅.
ΠΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·Π½Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°:
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΠ»ΡΠ³ΠΈ ΡΡΠ΅Π· Π΅Π΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅.
- ΠΡΠΈ Π»ΠΈΠΏΡΠ° Π½Π° ΡΠ΅Π΄ΠΈΡΠ° Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈ Π² ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠΈΠ» Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠ³Π°ΡΡΠ²Π°Π½Π΅ Ρ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΊΡΠΌ ΠΏΠΎΠ»Π΅Π·Π½ΠΈΡ ΡΠΎΠ²Π°Ρ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅.
- ΠΡΠΌΠ° Π½ΡΠΆΠ΄Π° Π΄Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π°ΠΊΡΠΈΠ²Π½ΠΈ ΡΠ΅ΡΠΈΠΈ, ΡΡΡΠ²ΡΡΠ½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΡΠ±Π²Π° ΡΠ°ΠΌΠΎ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°.
- ΠΠΎ-Π³ΡΠ²ΠΊΠ°Π² ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π΄ΠΎΡΡΡΠΏΠ° ΡΡΠ΅Π· Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈ Π² ΠΏΠΎΠ»Π΅Π·Π½ΠΈΡ ΡΠΎΠ²Π°Ρ.
- ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠΊΠ΅Π½ ΠΏΠΎΠ΄ΠΏΠΈΡ Π·Π° Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ° ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΈΡ ΡΠΎΠ²Π°Ρ ΠΏΠΎΠ²ΠΈΡΠ°Π²Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ.
JWT ΡΠΎΠΊΠ΅Π½ - ΡΡΡΡΠ°Π²
ΠΠ°Π³Π»Π°Π²ΠΈΠ΅ - ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ° ΡΡΠ΄ΡΡΠΆΠ° ΡΠ°ΠΌΠΎ ΡΠΈΠΏΠ° ΡΠΎΠΊΠ΅Π½ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅.
Π’ΠΈΠΏΡΡ Π½Π° ΡΠΎΠΊΠ΅Π½Π° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π² ΠΊΠ»ΡΡΠ° "typ". ΠΠ»ΡΡΡΡ βΡΠΈΠΏβ ΡΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠ° Π² JWT. ΠΠΊΠΎ ΠΊΠ»ΡΡΡΡ "typ" ΠΏΡΠΈΡΡΡΡΠ²Π°, Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ JWT, Π·Π° Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅, ΡΠ΅ ΡΠΎΠ·ΠΈ ΠΎΠ±Π΅ΠΊΡ Π΅ JSON ΡΠ΅Π± ΡΠΎΠΊΠ΅Π½.
ΠΡΠΎΡΠΈΡΡ ΠΊΠ»ΡΡ "alg" Π΄Π΅ΡΠΈΠ½ΠΈΡΠ° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΎΠΊΠ΅Π½Π°. Π’ΡΡΠ±Π²Π° Π΄Π° Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½ Π½Π° HS256 ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. ΠΠ°Π³Π»Π°Π²ΠΈΠ΅ΡΠΎ Π΅ ΠΊΠΎΠ΄ΠΈΡΠ°Π½ΠΎ Π² base64.
{ "alg": "HS256", "type": "JWT"}
ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΡΠΎΠ²Π°Ρ (ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅) - ΠΏΠΎΠ»Π΅Π·Π½ΠΈΡΡ ΡΠΎΠ²Π°Ρ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π²ΡΡΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π°. ΠΡΠ΅ΠΊΠΈ ΠΊΠ»ΡΡ Π² ΠΏΠΎΠ»Π΅Π·Π½ΠΈΡ ΡΠΎΠ²Π°Ρ Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΡΠΎ "ΠΏΡΠ΅ΡΠ΅Π½ΡΠΈΡ". ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²Π»Π΅Π·Π΅ΡΠ΅ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ°ΠΌΠΎ Ρ ΠΏΠΎΠΊΠ°Π½Π° (Π·Π°ΡΠ²ΠΎΡΠ΅Π½Π° ΠΏΡΠΎΠΌΠΎΡΠΈΡ). ΠΠΎΠ³Π°ΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΏΠΎΠΊΠ°Π½ΠΈΠΌ Π½ΡΠΊΠΎΠΉ Π΄Π° ΡΡΠ°ΡΡΠ²Π°, Π½ΠΈΠ΅ ΠΌΡ ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ ΠΏΠΈΡΠΌΠΎ Ρ ΠΏΠΎΠΊΠ°Π½Π°. ΠΠ°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π΄Π°Π»ΠΈ ΠΈΠΌΠ΅ΠΉΠ» Π°Π΄ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈ Π½Π° Π»ΠΈΡΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΏΠΎΠΊΠ°Π½Π°ΡΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈΠΌ ΡΠΎΠ·ΠΈ Π°Π΄ΡΠ΅Ρ Π² ΠΏΠΎΠ»Π΅Π·Π½ΠΈΡ ΡΠΎΠ²Π°Ρ, Π·Π° ΡΠΎΠ²Π° Π³ΠΎ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°ΠΌΠ΅ Π² ΠΊΠ»ΡΡΠ° βΠΈΠΌΠ΅ΠΉΠ»β
{ "Π΅Π»Π΅ΠΊΡΡΠΎΠ½Π½Π° ΠΏΠΎΡΠ°": "[ΠΈΠΌΠ΅ΠΉΠ» Π·Π°ΡΠΈΡΠ΅Π½]"}
ΠΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ Π² ΠΏΠΎΠ»Π΅Π·Π½ΠΈΡ ΡΠΎΠ²Π°Ρ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ. ΠΠΌΠ° ΠΎΠ±Π°ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈ:
- iss (ΠΠ·Π΄Π°ΡΠ΅Π») - ΠΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΎΡ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΡΠΎΠΊΠ΅Π½ΡΡ.
- sub (Π’Π΅ΠΌΠ°) - ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΠ΅ΠΌΠ°ΡΠ° Π½Π° ΡΠΎΠΊΠ΅Π½Π°.
- aud (ΠΡΠ΄ΠΈΡΠΎΡΠΈΡ) Π΅ ΠΌΠ°ΡΠΈΠ² ΠΎΡ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΡΠΌ ΡΠ΅Π³ΠΈΡΡΡΡ Π½ΠΈΠ·ΠΎΠ²Π΅ ΠΈΠ»ΠΈ URI, ΠΊΠΎΠΉΡΠΎ Π΅ ΡΠΏΠΈΡΡΠΊ Π½Π° ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΡΠΎΠΊΠ΅Π½. ΠΠΎΠ³Π°ΡΠΎ ΠΏΡΠΈΠ΅ΠΌΠ°ΡΠ°ΡΠ° ΡΡΡΠ°Π½Π° ΠΏΠΎΠ»ΡΡΠΈ JWT Ρ Π΄Π°Π΄Π΅Π½ ΠΊΠ»ΡΡ, ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈ Π·Π° ΠΏΡΠΈΡΡΡΡΠ²ΠΈΠ΅ΡΠΎ ΡΠΈ Π² ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»ΠΈΡΠ΅ - Π² ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΡΠΎΠΊΠ΅Π½Π°.
- exp (Expiration Time) β ΠΠΎΠΊΠ°Π·Π²Π° ΠΊΠΎΠ³Π° ΡΠΎΠΊΠ΅Π½ΡΡ ΠΈΠ·ΡΠΈΡΠ°. Π‘ΡΠ°Π½Π΄Π°ΡΡΡΡ JWT ΠΈΠ·ΠΈΡΠΊΠ²Π° Π²ΡΠΈΡΠΊΠΈ Π½Π΅Π³ΠΎΠ²ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π° ΠΎΡΡ Π²ΡΡΠ»ΡΡ ΠΈΠ·ΡΠ΅ΠΊΠ»ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ. ΠΠ»ΡΡΡΡ exp ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΊΠ»Π΅ΠΉΠΌΠΎ Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π² unix ΡΠΎΡΠΌΠ°Ρ.
- nbf (Not Before) Π΅ Π²ΡΠ΅ΠΌΠ΅ Π² unix ΡΠΎΡΠΌΠ°Ρ, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ°, Π² ΠΊΠΎΠΉΡΠΎ ΡΠΎΠΊΠ΅Π½ΡΡ ΡΡΠ°Π²Π° Π²Π°Π»ΠΈΠ΄Π΅Π½.
- iat (ΠΠ·Π΄Π°Π΄Π΅Π½ Π²) - Π’ΠΎΠ·ΠΈ ΠΊΠ»ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠΎΠΊΠ΅Π½ΡΡ Π΅ ΠΈΠ·Π΄Π°Π΄Π΅Π½ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π²ΡΠ·ΡΠ°ΡΡΡΠ° Π½Π° JWT. ΠΠ»ΡΡΡΡ iat ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΊΠ»Π΅ΠΉΠΌΠΎ Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π² unix ΡΠΎΡΠΌΠ°Ρ.
- Jti (JWT ID) β Π½ΠΈΠ·, ΠΊΠΎΠΉΡΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ° ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΡΠΎΠ·ΠΈ ΡΠΎΠΊΠ΅Π½, ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ ΠΊΡΠΌ Π³Π»Π°Π²Π½ΠΈ ΠΈ ΠΌΠ°Π»ΠΊΠΈ Π±ΡΠΊΠ²ΠΈ.
ΠΠ°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅, ΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΈΡΡ ΡΠΎΠ²Π°Ρ Π½Π΅ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° Π² ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π° ΡΠΎΡΠΌΠ° (Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠΎΠΊΠ΅Π½ΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΈ ΡΠΎΠ³Π°Π²Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π°Ρ ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½ΠΈ Π΄Π°Π½Π½ΠΈ). Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π½ΠΈΠΊΠ°ΠΊΠ²Π° ΡΠ΅ΠΊΡΠ΅ΡΠ½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ°, ΠΏΠΎΠ»Π΅Π·Π½ΠΈΡΡ ΡΠΎΠ²Π°Ρ Π΅ ΠΊΠΎΠ΄ΠΈΡΠ°Π½ base64.
ΠΠΎΠ΄ΠΏΠΈΡ - ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π·Π°Π³Π»Π°Π²ΠΈΠ΅ ΠΈ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΡΠΎΠ²Π°Ρ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΡΠΈΡΠ»ΠΈΠΌ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°.
Base64-ΠΊΠΎΠ΄ΠΈΡΠ°Π½: Π·Π°Π³Π»Π°Π²ΠΈΠ΅ΡΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΈΡΡ ΡΠΎΠ²Π°Ρ ΡΠ΅ Π²Π·Π΅ΠΌΠ°Ρ, ΡΠ΅ ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Ρ Π² Π½ΠΈΠ· ΡΡΠ΅Π· ΡΠΎΡΠΊΠ°. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠΎΠ·ΠΈ Π½ΠΈΠ· ΠΈ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΈΡΡ ΠΊΠ»ΡΡ ΡΠ΅ Π²ΡΠ²Π΅ΠΆΠ΄Π°Ρ Π² Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° Π·Π° ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅, ΠΏΠΎΡΠΎΡΠ΅Π½ Π² Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ° (ΠΊΠ»ΡΡ "alg"). ΠΠ»ΡΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Π½ΠΈΠ·. ΠΠΎ-Π΄ΡΠ»Π³ΠΈΡΠ΅ ΡΡΡΡΠ½ΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π½Π°ΠΉ-ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½ΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΎΡΠ½Π΅ΠΌΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ Π·Π° Π½Π°Π±ΠΈΡΠ°Π½Π΅.
{"alg":"RSA1_5","payload":"A128CBC-HS256"}
ΠΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Keycloak Failover Cluster Architecture
ΠΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΊΠ»ΡΡΡΠ΅Ρ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΠΈΠΌΠ° ΠΏΠΎΠ²ΠΈΡΠ΅Π½ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ Π·Π° SSO ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠΎΠ³Π°ΡΠΎ Π±ΡΠΎΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ Π΅ ΠΌΠ°Π»ΡΠΊ, ΡΠ΅Π·ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ Π½Π΅ ΡΠ° ΡΠΎΠ»ΠΊΠΎΠ²Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠΈ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, Π½ΠΎ Ρ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π±ΡΠΎΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈΡΠ΅, ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π·Π° Π½Π°Π»ΠΈΡΠ½ΠΎΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Ρ.
Π£Π²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΡΠΊΠ° ΠΎΡ ΠΏΠΎΠ²ΡΠ΅Π΄Π° Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΈΡ SSO ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° ΠΈΠ·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, ΠΈ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π³Π½Π°Ρ SLA. Π ΡΠ°Π·ΠΈ Π²ΡΡΠ·ΠΊΠ°, ΠΏΠΎ-ΡΠ΅ΡΡΠΎ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ ΠΈΠ»ΠΈ ΡΠ°Π½Π½ΠΈΡΠ΅ Π΅ΡΠ°ΠΏΠΈ Π½Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ ΠΈΠΌΠ°Ρ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°, ΠΊΠΎΡΡΠΎ Π½Π΅ Π΅ ΡΡΡΠΎΠΉΡΠΈΠ²Π° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ. Π‘ Π½Π°ΠΏΡΠ΅Π΄Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΈ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅. ΠΠ°ΠΉ-Π³ΡΠ²ΠΊΠ°Π²ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΠΈ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ² ΠΊΠ»ΡΡΡΠ΅Ρ ΡΡΠ΅Π· Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈΠ»ΠΈ Ρ ΠΈΠ±ΡΠΈΠ΄Π΅Π½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄.
ΠΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Π² ΡΠ΅ΠΆΠΈΠΌΠΈΡΠ΅ ΠΠΊΡΠΈΠ²Π΅Π½/ΠΠΊΡΠΈΠ²Π΅Π½ ΠΈ ΠΠΊΡΠΈΠ²Π΅Π½/ΠΠ°ΡΠΈΠ²Π΅Π½ ΠΊΠ»ΡΡΡΠ΅Ρ, Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΠΈ ΡΡΠ³Π»Π°ΡΡΠ²Π°Π½ΠΎΡΡ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π² ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ - ΠΈ Π΄Π²Π°ΡΠ° Π²ΡΠ·Π΅Π»Π° Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ°Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π³Π΅ΠΎ-ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠ΅Π½ΡΡΠΎΠ²Π΅ Π·Π° Π΄Π°Π½Π½ΠΈ.
ΠΠ°ΠΉ-ΠΏΡΠΎΡΡΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΡΡΠΎΠΉΡΠΈΠ²Π° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ.
ΠΠ°ΠΊΠ²ΠΈ ΡΠ° ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ° ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΅Π΄ΠΈΠ½ ΠΊΠ»ΡΡΡΠ΅Ρ:
- ΠΠΈΡΠΎΠΊΠ° Π½Π°Π»ΠΈΡΠ½ΠΎΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ΅ΠΆΠΈΠΌΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ°: ΠΠΊΡΠΈΠ²Π΅Π½ / ΠΠΊΡΠΈΠ²Π΅Π½, ΠΠΊΡΠΈΠ²Π΅Π½ / ΠΠ°ΡΠΈΠ²Π΅Π½.
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ - ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ.
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅.
- Π£Π½ΠΈΡΠΈΡΠΈΡΠ°Π½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ/Π°Π²ΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ/Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠΈ.
- ΠΠΎ-ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π±Π΅Π· ΡΡΠ°ΡΡΠΈΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅.
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° JWT ΡΠΎΠΊΠ΅Π½Π° Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ.
- ΠΠ΄ΠΈΠ½ΠΈΡΠ½Π° ΡΠΎΡΠΊΠ° Π½Π° Π΄ΠΎΠ²Π΅ΡΠΈΠ΅.
- ΠΠΎ-Π±ΡΡΠ·ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³ΠΈ/Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ (Π½ΡΠΌΠ° Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΏΠΎΠ²Π΄ΠΈΠ³Π°Π½Π΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ).
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° Π·Π°ΠΊΡΠΏΠΈΡΠ΅ ΡΡΡΠ³ΠΎΠ²ΡΠΊΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΎΡ Π΄ΠΎΡΡΠ°Π²ΡΠΈΠΊΠ°.
ΠΠ°ΠΊΠ²ΠΎ Π΄Π° ΡΡΡΡΠΈΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΠ»Π°Π½ΠΈΡΠ°ΡΠ΅ ΠΊΠ»ΡΡΡΠ΅Ρ
Π‘Π£ΠΠ
Keycloak ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, Π·Π° Π΄Π° ΡΡΡ
ΡΠ°Π½ΡΠ²Π°: ΡΡΠ΅ΡΠΈ, ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ, ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΠΈ Π΄Ρ.
ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ ΡΠΈΡΠΎΠΊ Π½Π°Π±ΠΎΡ ΠΎΡ Π‘Π£ΠΠ: MS SQL, Oracle, MySQL, PostgreSQL. Keycloak ΠΈΠ΄Π²Π° ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½Π° ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. ΠΡΠ΅ΠΏΠΎΡΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π½Π΅Π·Π°ΡΠ΅Π΄Π΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈ - ΠΊΠ°ΡΠΎ ΡΡΠ΅Π΄ΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°.
ΠΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Π² ΡΠ΅ΠΆΠΈΠΌΠΈ Π½Π° Π°ΠΊΡΠΈΠ²Π΅Π½/Π°ΠΊΡΠΈΠ²Π΅Π½ ΠΈ Π°ΠΊΡΠΈΠ²Π΅Π½/ΠΏΠ°ΡΠΈΠ²Π΅Π½ ΠΊΠ»ΡΡΡΠ΅Ρ, ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΡΠ³Π»Π°ΡΡΠ²Π°Π½ΠΎΡΡ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π² ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΈ Π΄Π²Π°ΡΠ° Π²ΡΠ·Π΅Π»Π° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ°Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π½ΡΡΠΎΠ²Π΅ΡΠ΅ Π·Π° Π΄Π°Π½Π½ΠΈ.
Π Π°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠ΅Ρ (Infinspan)
ΠΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΊΠ»ΡΡΡΠ΅ΡΡΡ, Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΠΈΠΏΠΎΠ²Π΅ ΠΊΠ΅ΡΠΎΠ²Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° JBoss Data Grid:
Π‘Π΅ΡΠΈΠΈ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ - ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΏΡΠΈ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π». ΠΠ°ΡΠ²ΠΊΠΈΡΠ΅ ΠΎΡ ΡΠΎΠ·ΠΈ ΠΊΠ΅Ρ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π²ΠΊΠ»ΡΡΠ²Π°Ρ ΡΠ°ΠΌΠΎ Π±ΡΠ°ΡΠ·ΡΡΠ° ΠΈ ΡΡΡΠ²ΡΡΠ° Keycloak, Π½ΠΎ Π½Π΅ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
Π’ΠΎΠΊΠ΅Π½ΠΈΡΠ΅ Π·Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΡΡΠ΅Π½Π°ΡΠΈΠΈ, ΠΏΡΠΈ ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΠ²ΡΡΠ΄ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ (ΡΡΠ΅Π· ΠΈΠΌΠ΅ΠΉΠ»). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΠΎΡΠΎΠΊΠ° Π½Π° Π·Π°Π±ΡΠ°Π²Π΅Π½Π° ΠΏΠ°ΡΠΎΠ»Π°, ΠΊΠ΅ΡΡΡ actionTokens Infinispan ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ Π·Π° ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΠΈΡΠΎ Π²Π΅ΡΠ΅ ΡΠ° Π±ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ.
ΠΠ΅ΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΎΠ±Π΅Π·ΡΠΈΠ»Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ - ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π·Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ, Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π°Ρ Π½Π΅Π½ΡΠΆΠ½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. ΠΠΎΠ³Π°ΡΠΎ Π½ΡΠΊΠΎΠΉ ΡΡΡΠ²ΡΡ Π½Π° Keycloak Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° Π΄Π°Π½Π½ΠΈΡΠ΅, Π²ΡΠΈΡΠΊΠΈ Π΄ΡΡΠ³ΠΈ ΡΡΡΠ²ΡΡΠΈ Π½Π° Keycloak Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π½ΡΡΠΎΠ²Π΅ Π·Π° Π΄Π°Π½Π½ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π½Π°ΡΡ Π·Π° ΡΠΎΠ²Π°.
Π Π°Π±ΠΎΡΠ° - ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ ΡΠ°ΠΌΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠ½ΠΈ Π²ΡΠ·Π»ΠΈ ΠΈ ΡΠ΅Π½ΡΡΠΎΠ²Π΅ Π·Π° Π΄Π°Π½Π½ΠΈ.
ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΡΠ΅ΡΠΈΠΈ - ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π·Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡΠ΅ ΡΠ΅ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π²Π°Π»ΠΈΠ΄Π½ΠΈ Π·Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΠ΅ΡΠΈΡΡΠ° Π½Π° Π±ΡΠ°ΡΠ·ΡΡΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. ΠΠ΅ΡΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° HTTP Π·Π°ΡΠ²ΠΊΠΈ ΠΎΡ ΠΊΡΠ°ΠΉΠ½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
ΠΠ°ΡΠΈΡΠ° ΠΎΡ Π³ΡΡΠ±Π° ΡΠΈΠ»Π° - ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΈ Π²Π»ΠΈΠ·Π°Π½ΠΈΡ.
ΠΠ°Π»Π°Π½ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ
Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π·Π° Π±Π°Π»Π°Π½ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° Π²Ρ ΠΎΠ΄Π½Π° ΡΠΎΡΠΊΠ° ΠΊΡΠΌ keycloak ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π»Π΅ΠΏΠΊΠ°Π²ΠΈ ΡΠ΅ΡΠΈΠΈ.
Π‘ΡΡΠ²ΡΡΠΈ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π’Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π΅Π΄ΠΈΠ½ Ρ Π΄ΡΡΠ³ ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ°. ΠΠ°ΠΉ-ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΈΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π² OpenShift, Kubernates, Rancher.
Π‘ ΡΠΎΠ²Π° ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°ΠΌΠ΅ ΠΏΡΡΠ²Π°ΡΠ° ΡΠ°ΡΡ β ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ½Π°ΡΠ°. Π ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ° ΠΎΡ ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com