ΠΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: Π ΡΡΠΎΠΌ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Okta ΠΏΡΠΎΡΡΠΎ ΠΈ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°Ρ ΡΠ°Π±ΠΎΡΡ OAuth ΠΈ OIDC (OpenID Connect). ΠΡΠΈ Π·Π½Π°Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ, ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌ ΠΈ Π΄Π°ΠΆΠ΅ Β«ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΒ» ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΡΠΎΠΆΠ΅ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ.
Π Β«ΠΊΠ°ΠΌΠ΅Π½Π½ΠΎΠΌ Π²Π΅ΠΊΠ΅Β» ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π΄Π΅Π»ΠΈΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ Π±ΡΠ»ΠΎ Π»Π΅Π³ΠΊΠΎ. ΠΡ ΠΏΡΠΎΡΡΠΎ Π΄Π°Π²Π°Π»ΠΈ ΡΠ²ΠΎΠΉ Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° Π΄ΡΡΠ³ΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΡΠΎΡ Π²ΠΎΡΠ΅Π» Π² Π²Π°ΡΡ ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ» Π»ΡΠ±ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΅ΠΌΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
Β«ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠ΅ ΡΠ²ΠΎΡ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΡΡ ΡΡΡΡΠΊΡΒ». β Β«ΠΠ±Π΅ΡΠ°Π΅ΠΌ, ΡΡΠΎ Ρ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ ΠΈ Π΄Π΅Π½ΡΠ³Π°ΠΌΠΈ Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅. ΠΠΎΡ ΠΏΡΡΠΌ ΡΠ΅ΡΡΠ½ΠΎ-ΠΏΡΠ΅ΡΠ΅ΡΡΠ½ΠΎ!Β» *Ρ
ΠΈ-Ρ
ΠΈ*
ΠΡΡΡ! ΠΠΈΠΊΡΠΎ ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π»ΠΎΠ³ΠΈΠ½ΠΎΠΌ ΠΈ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ, Π΅Π³ΠΎ ΡΡΡΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ. ΠΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π³Π°ΡΠ°Π½ΡΠΈΠΈ, ΡΡΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ, ΡΡΠΎΡΡΠ°Ρ Π·Π° ΡΡΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ, Π±ΡΠ΄Π΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ Π½Π΅ ΡΠΎΠ±Π΅ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π΄ΠΈΠΊΠΎΡΡΡΡ, Π½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΡ!
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΈΠΌΠ΅Π΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ΅ΡΠ²ΠΈΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΌΠ°ΡΡΡ ΠΆΠ°ΡΠ³ΠΎΠ½ΠΈΠ·ΠΌΠΎΠ² ΠΈ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ², ΡΡΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ ΠΈΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅. Π¦Π΅Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° β Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΡΡΡ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΉ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ (ΠΡΠΌΠ°Π΅ΡΠ΅, ΡΡΠΎ ΠΌΠΎΠΈ ΡΠΈΡΡΠ½ΠΊΠΈ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡ Π΄Π΅ΡΡΠΊΡΡ ΠΌΠ°Π·Π½Ρ? ΠΡ ΠΈ Π»Π°Π΄Π½ΠΎ!).
ΠΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠΈΠΌ, ΡΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Π²ΠΈΠ΄Π΅ΠΎ:
ΠΠ°ΠΌΡ ΠΈ Π³ΠΎΡΠΏΠΎΠ΄Π°, Π²ΡΡΡΠ΅ΡΠ°ΠΉΡΠ΅: OAuth 2.0
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ Π²Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ ΡΠ°ΠΉΡ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«ΠΠ΅ΡΠ΄Π°ΡΠ½ΡΠΉ ΠΊΠ°Π»Π°ΠΌΠ±ΡΡ Π΄Π½ΡΒ» [Terrible Pun of the Day] ΠΈ ΡΠ΅ΡΠΈΠ»ΠΈ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° Π½Π΅ΠΌ, ΡΡΠΎΠ±Ρ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΊΠ°Π»Π°ΠΌΠ±ΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ΅Π»Π΅ΡΠΎΠ½. Π‘Π°ΠΉΡ Π²Π°ΠΌ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΡΡ, ΠΈ Π²Ρ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΠΈΠΌ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π·Π½Π°ΠΊΠΎΠΌΡΠΌΠΈ. ΠΠ΅Π΄Ρ ΠΆΡΡΠΊΠΈΠ΅ ΠΊΠ°Π»Π°ΠΌΠ±ΡΡΡΠΈΠΊΠΈ Π½ΡΠ°Π²ΡΡΡΡ Π²ΡΠ΅ΠΌ, Π½Π΅ ΡΠ°ΠΊ Π»ΠΈ?
Β«ΠΠ΅ΡΠ΄Π°ΡΠ½ΡΠΉ ΠΊΠ°Π»Π°ΠΌΠ±ΡΡ Π΄Π½Ρ: Π‘Π»ΡΡΠ°Π»ΠΈ ΠΎ ΠΏΠ°ΡΠ½Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΠ΅ΡΡΠ» Π»Π΅Π²ΡΡ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ ΡΠ΅Π»Π°? Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ½ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠ°Π²!Β» (ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΡΠΉ, Ρ.ΠΊ. Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π΅ ΡΠ²ΠΎΡ ΠΈΠ³ΡΠ° ΡΠ»ΠΎΠ² β ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².)
ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΡ ΠΈΠ· ΠΊΠΎΠ½ΡΠ°ΠΊΡ-Π»ΠΈΡΡΠ° Π½Π΅ Π²Π°ΡΠΈΠ°Π½Ρ. Π, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΡ Π±Ρ ΡΡΡΠΎΡΠΊΡ ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° ΠΌΠ΅Π½Ρ, ΡΠΎ ΠΏΠΎΠΉΠ΄Π΅ΡΠ΅ Π½Π° Π²ΡΡ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π»ΠΈΡΠ½Π΅ΠΉ ΡΠ°Π±ΠΎΡΡ. ΠΠ»Π°Π³ΠΎ Terrible Pun of the Day ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΌ ΠΏΡΠΈΠ³Π»Π°ΡΠΈΡΡ Π²ΡΠ΅Ρ Π²Π°ΡΠΈΡ Π΄ΡΡΠ·Π΅ΠΉ! ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π»ΠΈΡΡ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΠ΅ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΎΠ² β ΡΠ°ΠΉΡ ΡΠ°ΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡ ΠΈΠΌ ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΡ (OAuth ΡΡΠ»ΠΈΡ)!
Β«ΠΡΠ΅ Π»ΡΠ±ΡΡ ΠΊΠ°Π»Π°ΠΌΠ±ΡΡΡ! β Π£ΠΆΠ΅ Π·Π°Π»ΠΎΠ³ΠΈΠ½ΠΈΠ»ΠΈΡΡ? β Π₯ΠΎΡΠΈΡΠ΅ ΠΎΡΠΊΡΡΡΡ Π΄ΠΎΡΡΡΠΏ ΡΠ°ΠΉΡΡ Terrible Pun of the Day ΠΊ ΡΠΏΠΈΡΠΊΡ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΎΠ²? β Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ! Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ Π±ΡΠ΄Π΅ΠΌ ΡΠ»Π°ΡΡ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΡ Π²ΡΠ΅ΠΌ, ΠΊΠΎΠ³ΠΎ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, Π΄ΠΎ ΡΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π²Π΅ΠΊΠΎΠ²! ΠΡ ΡΠ°ΠΌΡΠΉ Π»ΡΡΡΠΈΠΉ Π΄ΡΡΠ³!Β»
- ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠ²ΠΎΠΉ ΡΠ΅ΡΠ²ΠΈΡ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ.
- ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π½Π° ΡΠ°ΠΉΡ ΠΏΠΎΡΡΡ ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡΠ΅ Π² ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ.
- ΠΠ°ΠΉΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΡΡ Terrible Pun of the Day Π½Π° Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ°ΠΌ.
- ΠΠ΅ΡΠ½ΠΈΡΠ΅ΡΡ Π½Π° ΡΠ°ΠΉΡ Terrible Pun of the Day.
Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠ΅ΡΠ΅Π΄ΡΠΌΠ°Π΅ΡΠ΅, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ OAuth, ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠΏΠΎΡΠΎΠ± Π°Π½Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΡΡΡΠΏ. Π Π΅ΡΠΈΠ², ΡΡΠΎ Π²Ρ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΆΠ΅Π»Π°Π΅ΡΠ΅ Π΄Π΅Π»ΠΈΡΡΡΡ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ°ΠΌΠΈ Ρ Terrible Pun of the Day, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΡΠ°ΠΉΡ ΠΏΠΎΡΡΡ ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ°ΠΉΡ Ρ ΠΊΠ°Π»Π°ΠΌΠ±ΡΡΠ°ΠΌΠΈ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠΎΡΠΎΠΊ OAuth
Π’ΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΌΡ ΠΏΡΠΎΡΠ»ΠΈ ΡΠ΅ΡΠ΅Π· ΡΠΎ, ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ [flow] OAuth. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎΡ ΠΏΠΎΡΠΎΠΊ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π²ΠΈΠ΄ΠΈΠΌΡΡ ΡΠ°Π³ΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΡ ΡΠ°Π³ΠΎΠ², Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠΎΡΠΎΡΡΡ Π΄Π²Π° ΡΠ΅ΡΠ²ΠΈΡΠ° Π΄ΠΎΠ³ΠΎΠ²Π°ΡΠΈΠ²Π°ΡΡΡΡ ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΌ ΠΎΠ±ΠΌΠ΅Π½Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ. Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ Terrible Pun of the Day ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ OAuth 2.0, ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΊ Β«Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈΒ» [Β«authorization codeΒ» flow].
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΠ³Π»ΡΠ±ΠΈΡΡΡΡ Π² ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ OAuth, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ²:
- Resource Owner:
ΠΡΠΎ Π²Ρ! ΠΡ Π²Π»Π°Π΄Π΅Π΅ΡΠ΅ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠ΅ΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, ΡΠ²ΠΎΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ Π²ΡΠ΅ΠΌΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Ρ Ρ Π²Π°ΡΠΈΠΌΠΈ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°ΠΌΠΈ. - Client:
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ²ΠΈΡ Terrible Pun of the Day), ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ ΠΎΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ Resource Owner‘Π°. - Authorization Server:
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π½Π°Π΅Ρ Resource Owner‘Π° ΠΈ Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ Resource Owner‘Π° ΡΠΆΠ΅ Π΅ΡΡΡ ΡΡΠ΅ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ. - Resource Server:
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (API) ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΌ Client Ρ ΠΎΡΠ΅Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ Resource Owner‘Π°. - Redirect URI:
Π‘ΡΡΠ»ΠΊΠ°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Authorization Server ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΠΈΡ Resource Owner‘Π° ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Client‘Ρ. ΠΠ½ΠΎΠ³Π΄Π° Π΅Π΅ Π½Π°Π·ΡΠ²Π°ΡΡ Β«ΠΠΎΠ·Π²ΡΠ°ΡΠ½ΡΠΌ URLΒ» (Β«Callback URLΒ»). - Response Type:
Π’ΠΈΠΏ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Client. Π‘Π°ΠΌΡΠΌ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΌ Response Type‘ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ΄, ΡΠΎ Π΅ΡΡΡ Client ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Authorization Code. - Scope:
ΠΡΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΡΡΡΡ Client‘Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. - Consent:
Authorization Server Π±Π΅ΡΠ΅Ρ Scopes, Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΠ΅ Client‘ΠΎΠΌ, ΠΈ ΡΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ Ρ Resource Owner‘Π°, Π³ΠΎΡΠΎΠ² Π»ΠΈ ΡΠΎΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Client‘Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ. - Client ID:
ΠΡΠΎΡ ID ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Client‘Π° Π½Π° Authorization Server‘Π΅. - Client Secret:
ΠΡΠΎ ΠΏΠ°ΡΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Client‘Ρ ΠΈ Authorization Server‘Ρ. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠΌ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ. - Authorization Code:
ΠΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΎΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Client ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Authorization Server‘Ρ Π² ΠΎΠ±ΠΌΠ΅Π½ Π½Π° Access Token. - Access Token:
ΠΠ»ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ Ρ Resource Server‘ΠΎΠΌ. ΠΡΠ°ΠΊΠΈΠΉ Π±Π΅ΠΉΠ΄ΠΆ ΠΈΠ»ΠΈ ΠΊΠ»ΡΡ-ΠΊΠ°ΡΡΠ°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ Client‘Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° Π·Π°ΠΏΡΠΎΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π½Π° Resource Server‘Π΅ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΈΠ½ΠΎΠ³Π΄Π° Authorization Server ΠΈ Resource Server ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΡΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡ, Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠ΅ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Authorization Server ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π΄ΠΎΠ²Π΅ΡΡΠ΅Ρ Resource Server.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΠΏΠΎΠ½ΡΡΠΈΡΠΌΠΈ OAuth 2.0, Π΄Π°Π²Π°ΠΉΡΠ΅ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΏΠΎΡΠΎΠΊΠ΅ OAuth.
- ΠΡ, Resource Owner, ΠΆΠ΅Π»Π°Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡΡ Terrible Pun of the Day (Client‘Ρ) Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠΈΠΌ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ°ΠΌ, ΡΡΠΎΠ±Ρ ΡΠΎΡ ΠΌΠΎΠ³ ΡΠ°Π·ΠΎΡΠ»Π°ΡΡ ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌ Π²Π°ΡΠΈΠΌ Π΄ΡΡΠ·ΡΡΠΌ.
- Client ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π±ΡΠ°ΡΠ·Π΅Ρ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ Authorization Server‘Π° ΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² Π·Π°ΠΏΡΠΎΡ Client ID, Redirect URI, Response Type ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Scopes (ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ), ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ.
- Authorization Server ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π²Π°Ρ, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Ρ Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ.
- Authorization Server Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΡΠΌΡ Consent (ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ) Ρ ΠΏΠ΅ΡΠ΅ΡΠ½Π΅ΠΌ Π²ΡΠ΅Ρ Scopes, Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΡ Client‘ΠΎΠΌ. ΠΡ ΡΠΎΠ³Π»Π°ΡΠ°Π΅ΡΠ΅ΡΡ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ΡΡ.
- Authorization Server ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π²Π°Ρ Π½Π° ΡΠ°ΠΉΡ Client‘Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Redirect URI Π²ΠΌΠ΅ΡΡΠ΅ Ρ Authorization Code (ΠΊΠΎΠ΄ΠΎΠΌ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ).
- Client Π½Π°ΠΏΡΡΠΌΡΡ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Ρ Authorization Server‘ΠΎΠΌ (Π² ΠΎΠ±Ρ ΠΎΠ΄ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Resource Owner‘Π°) ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Client ID, Client Secret ΠΈ Authorization Code.
- Authorization Server ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Ρ Access Token‘ΠΎΠΌ (ΡΠΎΠΊΠ΅Π½ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ°).
- Π’Π΅ΠΏΠ΅ΡΡ Client ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Access Token Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° Resource Server Ρ ΡΠ΅Π»ΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΎΠ².
Client ID ΠΈ Secret
ΠΠ°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΡΠ°Π·ΡΠ΅ΡΠΈΠ»ΠΈ Terrible Pun of the Day ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ°ΠΌ, Client ΠΈ Authorization Server ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ. Authorization Server ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π» Client ID ΠΈ Client Secret (ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡ Π½Π°Π·ΡΠ²Π°ΡΡ App ID ΠΈ App Secret) ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΠ» ΠΈΡ Client’Ρ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ OAuth.
Β«β ΠΡΠΈΠ²Π΅Ρ! Π― Ρ
ΠΎΡΠ΅Π» Π±Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΎΠ±ΠΎΠΉ! β ΠΠ° Π½Π΅ Π²ΠΎΠΏΡΠΎΡ! ΠΠΎΡ ΡΠ²ΠΎΠΈ Client ID ΠΈ Secret!Β»
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ Π½Π°ΠΌΠ΅ΠΊΠ°Π΅Ρ, ΡΡΠΎ Client Secret Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅ΡΠΆΠ°ΡΡΡΡ Π² ΡΠ°ΠΉΠ½Π΅, ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ Π·Π½Π°Π»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Client ΠΈ Authorization Server. ΠΠ΅Π΄Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡ Authorization Server ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ ΠΈΡΡΠΈΠ½Π½ΠΎΡΡΡ Client’Π°.
ΠΠΎ ΡΡΠΎ Π΅ΡΡ Π½Π΅ Π²ΡΡβ¦ ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΎΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΠΉΡΠ΅ OpenID Connect!
OAuth 2.0 ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ β Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΎΠΌΡ.
OpenID Connect ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π»ΠΎΠ³ΠΈΠ½ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, β ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΠΊ single sign-on (SSO). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ SSO-ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΡΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Facebook ΠΈΠ»ΠΈ Twitter, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Ρ Π½ΠΈΡ ΡΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
ΠΠΎΡΠΎΠΊ (flow) OpenID Connect Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ OAuth. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠ°Π·Π½ΠΈΡΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Π² ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ scope β openid
, β Π° Client Π² ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΊΠ°ΠΊ Access Token, ΡΠ°ΠΊ ΠΈ ID Token.
Π’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΠΎΡΠΎΠΊΠ΅ OAuth, Access Token Π² OpenID Connect β ΡΡΠΎ Π½Π΅ΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ΅ Client‘Ρ. Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Client‘Π° Access Token ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΠΊΡΡ ΡΡΡΠΎΠΊΡ ΠΈΠ· ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠΌ ΠΊ Resource Server‘Ρ, Π° ΡΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ Π»ΠΈ ΡΠΎΠΊΠ΅Π½. ID Token ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΈΠ½ΠΎΠ΅.
ID Token β ΡΡΠΎ JWT
ID Token β ΡΡΠΎ ΠΎΡΠΎΠ±ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΡΡΠΎΠΊΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΊΠ°ΠΊ JSON Web Token ΠΈΠ»ΠΈ JWT (ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠΎΠΊΠ΅Π½Ρ JWT ΠΏΡΠΎΠΈΠ·Π½ΠΎΡΡΡ ΠΊΠ°ΠΊ Β«jotsΒ»). Π‘ΡΠΎΡΠΎΠ½Π½ΠΈΠΌ Π½Π°Π±Π»ΡΠ΄Π°ΡΠ΅Π»ΡΠΌ JWT ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΉ Π°Π±ΡΠ°ΠΊΠ°Π΄Π°Π±ΡΠΎΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ Client ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΈΠ· JWT ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΠ°ΠΊΡΡ ΠΊΠ°ΠΊ ID, ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π²ΡΠ΅ΠΌΡ Π²Ρ ΠΎΠ΄Π° Π² ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ, ΡΡΠΎΠΊ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ID Token‘Π°, Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΏΠΎΠΏΡΡΠΎΠΊ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π° Π² JWT. ΠΠ°Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ ID Token‘Π° Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Π·Π°ΡΠ²ΠΊΠ°ΠΌΠΈ [claims].
Π ΡΠ»ΡΡΠ°Π΅ OIDC ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Client ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π»ΠΈΡΠ½ΠΎΡΡΠΈ [identity] ΠΎΡ Authorization Server‘Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π°Π΄ΡΠ΅Ρ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Access Token.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± OAuth ΠΈ OIDC
ΠΡΠ°ΠΊ, ΠΌΡ Π²ΠΊΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΡ OAuth ΠΈ OIDC. ΠΠΎΡΠΎΠ²Ρ ΠΊΠΎΠΏΠ½ΡΡΡ Π³Π»ΡΠ±ΠΆΠ΅? ΠΠΎΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ± OAuth 2.0 ΠΈ OpenID Connect:
-
What the Heck is OAuth? -
Nobody Cares About OAuth or OpenID Connect -
Implement the OAuth 2.0 Authorization Code with PKCE Flow -
What is the OAuth 2.0 Grant Type? -
OAuth 2.0 From the Command Line -
Build a Secure Node.js App with SQL Server
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ. Π§ΡΠΎΠ±Ρ Π±ΡΡΡ Π² ΠΊΡΡΡΠ΅ Π½Π°ΡΠΈΡ
ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
Π½ΠΎΠ²ΠΈΠ½ΠΎΠΊ, ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π°
P.S. ΠΎΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
ΠΠ·Π±ΡΠΊΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π² Kubernetes: Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ, Π°ΡΠ΄ΠΈΡ Β»; - Β«
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ RBAC Π² Kubernetes Β»; - Β«
33+ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Kubernetes Β»; - Β«
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Β».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com