Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ Π½Π°ΡΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ OAuth, ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠ΅ΡΠ½ΡΡ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π±ΡΠ΅Π½Π΄ΠΈΠ½Π³ΠΎΠΌ ΠΈ Ρ. Π΄. ΠΡΠΎ ΠΏΠΎΠΏΡΡΠΊΠ° ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ΅ ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΠΉΡΡΠ²Π΅Π½Π½ΡΠΌ Π² ΡΠ°ΠΌΠΊΠ°Ρ
Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ account
, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎ Π²ΡΠ΅ ΡΡΠΈ Π·Π°Π±ΠΎΡΡ.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΡΡΡΠΏΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° OAuth, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈ ΡΠΈΡΠΌΠ΅Π½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΡΡ ΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ.
ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΡΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ OAuth ΡΡΡΠ΄Π½ΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ ΠΊΠ°ΠΊ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΡΠΈΡΠΈΠ½Ρ:
Π― ΡΠΎΠ·Π΄Π°Π» ΡΡΠΈ ΠΊΠ°ΡΠΊΠ°ΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡ ΡΠ΅Π±Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ:ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΊΠ°ΡΠΊΠ°ΡΡ
(ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΡΡΠ΅ΡΠ½ΡΡ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π² ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΠΈΠΉΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² ΠΏΡΠ°Π²ΠΎΠΌ Π²Π΅ΡΡ
Π½Π΅ΠΌ ΡΠ³Π»Ρ)
Π΄Π°. @johanstokking @htdvisser , ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π΄Π°ΠΉΡΠ΅ ΠΌΠ½Π΅ Π·Π½Π°ΡΡ, ΡΡΠΈΡΠ°Π΅ΡΠ΅ Π»ΠΈ Π²Ρ, ΡΡΠΎ ΡΡΠΎΠΈΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π²ΡΠ΅ΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΡΠ°Π½ΠΈΡΡ Π²Ρ ΠΎΠ΄Π°/Π²ΡΡ ΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΡΡ ΠΈ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠΌ oauth, Π²ΠΎΡ ΠΌΠΎΠΉ ΠΏΠ»Π°Π½:
Account
Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ (Π²ΠΌΠ΅ΡΡΠΎ Π»ΠΎΠ³ΠΎΡΠΈΠΏΠ° TTS) ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΎΡ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ (cc @pierreph)/console/login
/account/login
, Π΅ΡΠ»ΠΈ Ρ Π½Π΅Π΅ Π½Π΅Ρ (Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ) ΡΠΎΠΊΠ΅Π½Π° Π΄ΠΎΡΡΡΠΏΠ°./users/logout
, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π²ΡΡ
ΠΎΠ΄ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ»Π°ΡΡΡΡ ΠΈΠ· Π»ΡΠ±ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°.ΠΡΠ»ΠΈ Ρ Π½Π΅ ΡΡΠ»ΡΡΡ ΠΆΠ°Π»ΠΎΠ± Π½Π° ΡΡΠΎΡ ΠΏΠ»Π°Π½, Ρ Π½Π°ΡΠ½Ρ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ.
ΠΠ²ΡΡΠΈΡ ΠΊΠ°ΠΊ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΏΠ»Π°Π½. Π― ΡΠΎΠ³Π»Π°ΡΠ΅Π½, ΡΡΠΎ Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ΅Π½ ΡΠ²Π½ΡΠΉ Π²ΡΡ ΠΎΠ΄ ΠΈΠ· ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΈ ΠΎΡΡΠ°Π²Π°ΠΉΡΠ΅ΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠ΅ΡΠ΅Π· OAuth Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅, Ρ ΠΎΡΡ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ.
Π§ΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ²? Π Π°Π·Π²Π΅ ΡΡΠΎ Π½Π΅ Π±ΡΠ» Π±Ρ ΠΏΡΠΎΡΡΠΎΠΉ Π΄Π²ΡΡ ΡΡΠ°ΠΏΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄; Β«ΡΡΡΠ°Π½ΠΈΡΠ° Π²ΡΡ ΠΎΠ΄Π°Β» Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΡΠΎΠΊΠ΅Π½Π° Π΄ΠΎΡΡΡΠΏΠ°, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π²ΡΡ ΠΎΠ΄Π°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Β«Π£ΡΠ΅ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡΒ»? ΠΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΡΠΎ Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π½ΠΎ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠ΅ Π²ΡΡ ΠΎΠ΄Π°?
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΠ΅ΡΠΏΠ½ΡΡΡ Π²Π΄ΠΎΡ Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΈΠ· Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ OpenID Connect. Π₯ΠΎΡΠΎΡΠ΅Π΅ ΡΠ΅Π·ΡΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π·Π΄Π΅ΡΡ: https://medium.com/@robert.broeckelmann/openid -connect-logout-eccc73df758f
ΠΠ²ΡΡΠΈΡ ΠΊΠ°ΠΊ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΏΠ»Π°Π½. Π― ΡΠΎΠ³Π»Π°ΡΠ΅Π½, ΡΡΠΎ Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ΅Π½ ΡΠ²Π½ΡΠΉ Π²ΡΡ ΠΎΠ΄ ΠΈΠ· ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΈ ΠΎΡΡΠ°Π²Π°ΠΉΡΠ΅ΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠ΅ΡΠ΅Π· OAuth Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅, Ρ ΠΎΡΡ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ.
Π§ΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ²? Π Π°Π·Π²Π΅ ΡΡΠΎ Π½Π΅ Π±ΡΠ» Π±Ρ ΠΏΡΠΎΡΡΠΎΠΉ Π΄Π²ΡΡ ΡΡΠ°ΠΏΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄; Β«ΡΡΡΠ°Π½ΠΈΡΠ° Π²ΡΡ ΠΎΠ΄Π°Β» Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΡΠΎΠΊΠ΅Π½Π° Π΄ΠΎΡΡΡΠΏΠ°, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π²ΡΡ ΠΎΠ΄Π°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Β«Π£ΡΠ΅ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡΒ»? ΠΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΡΠΎ Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π½ΠΎ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠ΅ Π²ΡΡ ΠΎΠ΄Π°?
ΠΠ²ΡΡ
ΡΡΠ°ΠΏΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ β ΡΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ. ΠΠ΅Π½Ρ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΠ»ΠΎ ΡΠΎ, ΡΡΠΎ Π²ΡΡ
ΠΎΠ΄ ΠΈΠ· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ CSRF, Π° ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ, Ρ ΠΊΠΎΠ³ΠΎ Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠ° Π΄Π»Ρ Π²ΡΡ
ΠΎΠ΄Π°, ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ±Π»Π°Π·Π½ΠΈΡΡ ΠΊΠΎΠ³ΠΎ-ΡΠΎ Π²ΡΠΉΡΠΈ ΠΈΠ· ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎ ΡΡΠ΅ΠΊΠΎΠΌ v2 ( ΡΠ΅Π»ΠΊΠ½ΡΠ² Π·Π΄Π΅ΡΡ, Π²Ρ Π²ΡΠΉΠ΄Π΅ΡΠ΅ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ ).
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠΎ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ, Π½ΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π»ΡΡΡΠ°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°.
Π― ΠΏΡΠΎΠ΄Π΅Π»Π°Π» Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°Π±ΠΎΡΡ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ:
Π― ΡΠ΄Π΅Π»Π°Π» ΡΡΠΎ, ΠΆΠ΅ΡΡΠΊΠΎ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π² ΡΠΎΠΊΠ΅Π½ Π΄ΠΎΡΡΡΠΏΠ°, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ API ΡΡΠ΅ΠΊΠ°. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΡΡ Π²ΠΏΠ΅ΡΠ΅Π΄ Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ Π·Π½Π°Ρ, ΠΊΠ°ΠΊ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠΊΠ΅Π½ Π΄ΠΎΡΡΡΠΏΠ° Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ.
ΠΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ Β«ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ oauthΒ» β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ SPA, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌ ΡΠΎΡΠΊΠ°ΠΌ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° oauth (Π²Ρ
ΠΎΠ΄ Π² ΡΠΈΡΡΠ΅ΠΌΡ, Π²ΡΡ
ΠΎΠ΄ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΌ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΠΊΠ΅Π½ Π΄ΠΎΡΡΡΠΏΠ°).
@htdvisser ΡΠΏΠΎΠΌΡΠ½ΡΠ» ΠΌΠ½Π΅, ΡΡΠΎ Π½Π°ΡΠ° ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΠΈΠ΄Π΅Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π±ΡΠ»ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ oauth Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Ρ. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΠΊΡΡΡΡ Π΄ΠΈΡΠΊΡΡΡΠΈΡ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ:
Π― ΡΠΆΠ΅ ΡΠΊΠ°Π·Π°Π» @htdvisser, ΡΡΠΎ Π²Π΅ΡΡ ΡΡΠΎΡ Π°ΡΠΏΠ΅ΠΊΡ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ/Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ΅Π»ΠΎΠΌΠ»ΡΠ΅Ρ ΠΌΠ΅Π½Ρ, ΠΈ Ρ Π½Π΅ ΡΡΠ²ΡΡΠ²ΡΡ ΡΠ΅Π±Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½Π½ΡΠΌ, ΡΡΠΎΠ±Ρ Π½Π΅ΡΡΠΈ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΡΠ°ΠΊΠΎΠΉ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π²ΠΎΠΏΡΠΎΡ.
ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΡΠ΅ΠΌΠΈΡΡΡΡ ΠΊ ΠΏΠΎΡΠΎΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅Π»Π°Π΅Ρ ΠΏΠΎΡΠΎΠΊ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π½Π°ΡΠΈΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΏΠΎΡ ΠΎΠΆΠΈΠΌ Π½Π° Π½Π°ΡΠΈΠ²Π½ΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ (ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ), ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ ΠΎΠ΄Ρ ΠΈ Π²ΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ²Π»ΡΡΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌΠΈ, ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΈ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠ°ΠΊ, ΠΌΠ½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΏΠΎΠΌΠΎΡΡ ΠΈ Π²ΠΊΠ»Π°Π΄, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ. ΠΠ°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ?
Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΡΠΈΠΏ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Ρ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ Β«ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ Β» ΠΈ Π΄ΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ².
ΠΠ°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠΎΠ»Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, ΡΠΌ. ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π΄Π΅ΡΡ: https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13#section -3.4
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ # 2148
ΠΡΠ°ΠΊ, ΠΏΠΎΡΠ»Π΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΈΡ Π² ΡΡΠΎΠΌ, Ρ Π΄ΡΠΌΠ°Ρ, ΠΌΠ½Π΅ Π½ΡΠΆΠ΅Π½ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»Π°Π΄.
ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΠΈΠ΄Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ oauth ΠΈ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ»ΡΠΌΠΈ ΠΈ ΡΠ΅Π°Π½ΡΠ°ΠΌΠΈ (ΡΠΌ. OP). ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΠΊΠ΅Π½ Π΄ΠΎΡΡΡΠΏΠ°, ΡΡΠΎ, ΠΏΠΎ ΡΡΡΠΈ, ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π±ΡΠ΄Π΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠΌ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ OAuth.
ΠΠΎΡ ΠΈΠ΄Π΅Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ OAuth ( account
) ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ OAuth. ΠΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊ OAuth (Π²Ρ
ΠΎΠ΄ Π² ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΈ Ρ. Π΄.), ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ (Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΡΠΈΠ»Ρ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π°Π½ΡΠΎΠΌ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ) ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΡΠΎ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠΌ OAuth ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ. ΠΠ° ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΡΡΠ°Π½Π΅Ρ ΡΠ°ΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° oauth
. Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΎΠ±Π΅ Π²Π΅ΡΠΈ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΡΠΎΡΠΊΡ Π²Ρ
ΠΎΠ΄Π° ( account.js
).
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΠ°ΠΆΠ°ΡΡ ΡΡΠΎ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
/account/login
Π΄Π»Ρ Π²Ρ
ΠΎΠ΄Π° ΠΏΠΎ oauth [ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° OAuth]/account/register
Π΄Π»Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ [ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° OAuth]/account/forgot-password
Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ [ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° OAuth]/account/client/login/ttn-stack
Π΄Π»Ρ Π²Ρ
ΠΎΠ΄Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ) [ΡΡΠΎΠ²Π΅Π½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° OAuth]/account/client/oauth/callback
Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΊΠΎΠ΄ΠΎΠΌ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ [ΡΡΠΎΠ²Π΅Π½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° OAuth]/account
ΠΎΠ±Π·ΠΎΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° oauth [ΡΡΠΎΠ²Π΅Π½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° OAuth]Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΠΎΠ±Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΎΡΡΠ°Π²ΠΈΠ² ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° OAuth ( /oauth
ΡΠ΅ΡΠ΅Π· pkg/oauth
) ΠΊΠ°ΠΊ Π΅ΡΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ( /account
ΡΠ΅ΡΠ΅Π· pkg/account
) ΠΊΠ°ΠΊ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ Π²Π΅ΡΡ, ΠΊΠ°ΠΊ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΡΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊ OAuth Π±ΡΠ΄Π΅Ρ Π½Π΅ΡΡΠΈ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π° Π²ΠΎΠΏΡΠΎΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΊΠ°ΠΊ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΠ»Π΅ Π²Ρ
ΠΎΠ΄Π° Π² ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠ½ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°ΡΠ΅ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Ρ ΡΠΎΠΊΠ΅Π½.
Π― ΡΡΠ²ΡΡΠ²ΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΡΠ°Π½ΠΈΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ²ΡΠ·Π°Π½Π° Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ΅ΡΠ½ΡΠΌΠΈ Π·Π°ΠΏΠΈΡΡΠΌΠΈ, Π½ΠΎ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅ΡΡ, ΠΌΠΎΠ³ΡΡ Π»ΠΈ ΠΎΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΠΎΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡΠΌ. ΠΡΠΎΡΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠΈΡΠ΅, Π½ΠΎ Π²ΠΎΠΏΡΠΎΡ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΡΠΈΡΠΎΠ²Π°ΡΡ/Π±ΡΠ΅Π½Π΄ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π»ΠΈ ΠΎΠ±Π° ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠΎΠΎΠ±ΡΠ°ΡΡΡΡ ΠΊΠ°ΠΊ Β«ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈΒ»? ΠΠ»ΠΈ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ The Things Stack Single Sign On
ΠΈ The Things Stack Account Application
?
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π΄Π°ΠΉΡΠ΅ ΠΌΠ½Π΅ Π·Π½Π°ΡΡ Π²Π°ΡΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅.
Π₯ΠΌ, ΡΠ΄Π΅Π»Π°Π² ΡΠ°Π³ Π½Π°Π·Π°Π΄, ΠΊΠ°ΠΊΠΎΠ²Π° ΡΠ΅Π»Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΊΠ»ΠΈΠ΅Π½Ρ OAuth? ΠΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· OAuth Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ?
ΠΡΠ΅ ΠΎΠ½ΠΈ ΡΡΠ΅Π±ΡΡΡ ΡΠΎΠΊΠ΅Π½Π° Π΄ΠΎΡΡΡΠΏΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ RPC.
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° OAuth, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«The Things Network CommunityΒ», ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠΌΠΈ ΡΡΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Ρ ΡΠ°Π½ΡΡΠ΅ΠΉΡΡ Π² The Things Stack, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΎΡΠΊΠΈ @kschiffer. Π½Π°ΠΏΠΈΡΠ°Π» Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π²ΡΡΠ΅.
ΠΠ°ΡΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ /api/v3/*
Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² cookie, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ CORS. ΠΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ API ΠΈ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ°.
- ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΡΠΈΠ»Ρ (ΠΈΠΌΡ, ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½Π°Ρ ΠΏΠΎΡΡΠ°, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ»Ρ)
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π°Π½ΡΠΎΠΌ (ΠΏΡΠΎΡΠΌΠΎΡΡ, ΠΎΡΠ·ΡΠ²)
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ (ΠΏΡΠΎΡΠΌΠΎΡΡ, ΠΎΡΠ·ΡΠ²)
- (ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ΅ΡΠ°-Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ TTES, Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ)
ΠΡΠ΅ ΠΎΠ½ΠΈ ΡΡΠ΅Π±ΡΡΡ ΡΠΎΠΊΠ΅Π½Π° Π΄ΠΎΡΡΡΠΏΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ RPC.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ°ΡΡΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ, Π½ΠΎ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π»ΠΎ Π±Ρ, ΡΡΠΎ ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π±ΡΠ΄Π΅Ρ Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠΌΠ΅ΡΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π― ΠΌΠΎΠ³ Π²ΠΈΠ΄Π΅ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ»ΠΎ Π±Ρ Π»ΡΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ½ΡΠΌΠΈ Π·Π°ΠΏΠΈΡΡΠΌΠΈ Π±Π΅Π· Π½Π°ΠΊΠ»Π°Π΄Π½ΡΡ ΡΠ°ΡΡ ΠΎΠ΄ΠΎΠ² Π½Π° Π²ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ, Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΡΠ»ΠΎΠΆΠ½ΡΡ π€·ββοΈ.
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π²ΠΎΠΏΡΠΎΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, Ρ ΠΎΡΠΈΠΌ Π»ΠΈ ΠΌΡ Π²ΠΈΠ΄Π΅ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π΅Π»Π°ΠΌΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌΠΈ Ρ ΡΠ΅ΡΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈΠ±ΠΎ ΠΎΡΠΊΡΡΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Ρ Π²ΠΎΠΏΡΠΎΡΠΎΠ², ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ TTS, Π»ΠΈΠ±ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠΌΠΈ ΠΈ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ/ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ Π·Π°Π΄Π°Ρ. ΠΡΠΎ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΠΎΠΏΡΠΎΡ. Π― Π²ΠΈΠΆΡ ΡΠ»ΡΡΠ°ΠΈ Π΄Π»Ρ ΠΎΠ±ΠΎΠΈΡ .
Π― Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΊΠΎΠ½ΡΠΎΠ»Ρ (Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π΅ΡΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅) Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ»Π½ΡΠ΅ ΠΏΡΠ°Π²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎΠ½ΡΠΎΠ»ΠΈ Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ OAuth, ΡΠ΅Π°Π½ΡΠ°ΠΌΠΈ, ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ Π°Π΄ΡΠ΅ΡΠΎΠΌ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ ΠΈ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ. ΠΡΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ (ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ).
ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, Ρ ΠΎΡΠΎΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌΡ Π²ΠΎΠΏΡΠΎΡΡ .
ΠΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅:
Π‘ΠΌΠ΅ΡΠ°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄:
Π Π°Π·Π΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄:
Π― ΡΠΊΠ»ΠΎΠ½ΡΡΡΡ ΠΊ ΡΠΌΠ΅ΡΠ°Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ.
- ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΡΠΈΠ»Ρ (ΠΈΠΌΡ, ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½Π°Ρ ΠΏΠΎΡΡΠ°, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ»Ρ)
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π°Π½ΡΠΎΠΌ (ΠΏΡΠΎΡΠΌΠΎΡΡ, ΠΎΡΠ·ΡΠ²)
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ (ΠΏΡΠΎΡΠΌΠΎΡΡ, ΠΎΡΠ·ΡΠ²)
- (ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ΅ΡΠ°-Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ TTES, Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ)
ΠΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, Π²Π΅ΡΠ½ΠΎ? ΠΠ΅ OAuth?
- ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΄ΠΎΠΌ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ oauth, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΡΠ°Π·ΡΠΌΠ½ΠΎΠΌ Π±ΡΠ΅Π½Π΄ΠΈΠ½Π³Π΅ ΠΈ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΠ»Ρ ΡΠ΅Π³ΠΎ ΡΠΎΠ³Π΄Π° Π΅ΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ OAuth?
ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ OAuth Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π· Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ?
ΠΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, Π²Π΅ΡΠ½ΠΎ? ΠΠ΅ OAuth?
ΠΠ°, ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ. ΠΠΎ ΠΏΠ»Π°Π½ ΡΠΎΡΡΠΎΡΠ» Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Ρ Π½Π°Ρ ΡΠ΅ΠΉΡΠ°Ρ Π΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ OAuth, ΡΡΠ°Π½Π΅Ρ ΡΠ°ΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ.
ΠΠ»Ρ ΡΠ΅Π³ΠΎ ΡΠΎΠ³Π΄Π° Π΅ΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ OAuth?
ΠΠ»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ (Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΠΎΡΠΎΠΊΠ° OAuth), ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΠ±ΡΠΎΡΠ° ΠΏΠ°ΡΠΎΠ»Ρ. Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π²ΡΠ΅, ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ².
ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ OAuth Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π· Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ?
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΊΠΎΡΠ΅Π΅ Π² Π΄ΡΡΠ³ΠΎΠΌ: ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΡΡΠΈΡΠΈΡΡ Π½Π°ΡΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ OAuth ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠΊΠ΅Π½ Π΄ΠΎΡΡΡΠΏΠ°. ΠΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΡΡΠΈΡΡ ΠΈ ΡΠΉΡΠ°. ΠΡΠ»ΠΈ Π±Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ (ΡΠ΅Π°Π½ΡΡ, Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΈ Ρ.Β Π΄.), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΉΠ»Π° cookie ΡΠ΅Π°Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ OAuth, ΡΠΎΠ³Π΄Π° Π²ΡΠ΅ Π±ΡΠ»ΠΎ Π±Ρ ΠΈΠ½Π°ΡΠ΅. ΠΠΎ ΠΈΠ· ΡΠΎΠ³ΠΎ, ΡΡΠΎ Ρ Π²ΠΈΠΆΡ, ΡΡΠΎ Π½Π΅Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌΠΎ.
Π―Π²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ OAuth ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΡ? Π Π΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π»ΠΈ ΠΎΠ½ ΠΏΠΎΡΠΎΠΊΠΈ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² OAuth? ΠΠ»ΠΈ ΡΡΠΎ ΡΠ°ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ OAuth?
ΠΠΊΡΠ΅Π½Ρ ΠΌΠΎΠΉ:
ΠΠΎΡ ΠΈΠ΄Π΅Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ OAuth (
account
) ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΡΠΎΠ±Ρ ΡΠΌΠ΅ΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ OAuth . ΠΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊ OAuth (Π²Ρ ΠΎΠ΄ Π² ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΈ Ρ. Π΄.), ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ (Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΡΠΈΠ»Ρ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π°Π½ΡΠΎΠΌ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ) ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΡΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠΌ OAuth ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ . ΠΠ° ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΡΡΠ°Π½Π΅Ρ ΡΠ°ΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ°oauth
.
Ρ Π²ΠΈΠΆΡ Π·Π΄Π΅ΡΡ;
oauth
Π― ΠΏΡΡΠ°ΡΡΡ ΠΏΠΎΠ½ΡΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ Ρ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠΎ Π΅ΡΡΡ ΡΡΠΎ Π΅ΡΠ΅.
ΠΡΠ°ΠΊ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ?
Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ 1-6 ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ, Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΊΠ°ΡΠ°ΡΡΡ OAuth, Π΅ΡΠ»ΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π°Π½ΡΠΎΠ²ΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ. ΠΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π΅ΡΠ½ΠΎ?
ΠΠ° ΠΈΠ·Π²ΠΈΠ½ΠΈ. Π£ Π½Π°Ρ Π΅ΡΡΡ ΡΡΠ΄ Π½Π΅ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΡΡΡΠ΄Π½ΡΡΡ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅. ΠΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΡΡΠΎ Π΄Π°Π΅Ρ Ρ ΠΎΡΠΎΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΠΎΠΏΡΠΎΡΠ° π .
ΠΡΠ°ΠΊ, Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ ΡΡΠ°ΡΡΡ-ΠΊΠ²ΠΎ:
OAuth-ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅Ρ
ΠΠ±ΡΠ΅ΠΊΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ (Π° Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ) ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OAuth 2.0. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΠΏΠ°ΠΊΠ΅Ρ pkg/oauth
, ΠΊΠΎΡΠΎΡΡΠΉ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ OAuth (ΡΠΌ. Π½ΠΈΠΆΠ΅) Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ (Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²Ρ
ΠΎΠ΄Π°, ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Ρ. Π΄.).
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ OAuth
ΠΡΠΎ ΡΠ΅Π°Π³ΠΈΡΡΡΡΠ΅Π΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π²Π½Π΅ΡΠ½Π΅ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅. ΠΠΎΠ΄ Π½Π°ΡΠ΅Π³ΠΎ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ°Π·Π½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΎΡΠΊΠ°ΠΌΠΈ Π²Ρ
ΠΎΠ΄Π° oauth.js
/ console.js
), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΠΈΠ΅ ΡΠ°ΡΡΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ΅Π°Π³ΠΈΡΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈ ΡΡΠΈΠ»ΠΈΡΡ.
OAuth-ΠΊΠ»ΠΈΠ΅Π½Ρ
ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ OAuth Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΎΡΡΠΈ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
ΠΏΠ°ΠΊΠ΅Ρ oauth
ΠΠ°ΠΊΠ΅Ρ Go, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΉ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° OAuth. ΠΡΠΎ pkg/oauth
.
ΠΡΠ°ΠΊ, Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ Π·Π΄Π΅ΡΡ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Ρ ΡΡΠΈ ΠΈΠ»ΠΈ ΡΠ΅ΡΡΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ»ΠΎΡ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΠΈΠΌ ΡΠΎΡ ΠΆΠ΅ ΡΠΏΠΎΡΠΎΠ± Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ, ΡΡΠΎ ΠΈ ΡΠ΅ΠΉΡΠ°Ρ, Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΡΠΎ-ΡΠΎ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ³ΡΠ°ΡΡ Π²ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΡΠΎΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ 1-6 ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ, Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΊΠ°ΡΠ°ΡΡΡ OAuth, Π΅ΡΠ»ΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π°Π½ΡΠΎΠ²ΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ. ΠΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π΅ΡΠ½ΠΎ?
Π΄Π°. 1-4 ΡΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ Π±Π΅Π· oauth/ΡΠΎΠΊΠ΅Π½Π° Π΄ΠΎΡΡΡΠΏΠ°. 5 ΠΈ 6 Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π½ΡΠΆΠ΄Π°ΡΡΡΡ Π² ΠΌΠ°ΡΠΊΠ΅ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ°. 7. ii Π΅ΡΠ΅ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½. ΠΡΠ»ΠΈ Π±Ρ 5 ΠΈ 6 Π±ΡΠ»ΠΈ Π±Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ Π±Π΅Π· ΡΠΎΠΊΠ΅Π½Π° Π΄ΠΎΡΡΡΠΏΠ°, ΡΠΎΠ³Π΄Π° Π½Π°ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΡΡ Π±Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ oauth Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°Ρ ΠΎΡΠΈΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠΊΠ΅Π½ Π΄ΠΎΡΡΡΠΏΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠ»ΠΈ Π±Ρ 5 ΠΈ 6 Π±ΡΠ»ΠΈ Π±Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ Π±Π΅Π· ΡΠΎΠΊΠ΅Π½Π° Π΄ΠΎΡΡΡΠΏΠ°, ΡΠΎΠ³Π΄Π° Π½Π°ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΡΡ Π±Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ oauth Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°Ρ ΠΎΡΠΈΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠΊΠ΅Π½ Π΄ΠΎΡΡΡΠΏΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. ΠΡΠΎ ΠΈΠΌΠ΅Π΅Ρ Π΄Π»Ρ ΠΌΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΌΡΡΠ». ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ Π»ΡΡΡΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π° Π΄Π»Ρ Β«ΡΠ΅ΠΆΠΈΠΌΠ° sudoΒ», ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ _ΡΠΎΠ»ΡΠΊΠΎ_ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° ΠΏΠ°ΡΠΎΠ»Ρ. Π’Π°ΠΊ ΡΡΠΎ Π΄Π°, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΌΠΎΠ³ΡΡ Π΄Π΅Π»Π°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ OAuth ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, Π½ΠΎ ΠΌΠ½Π΅ ΡΡΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌ. Π― Π²ΠΈΠΆΡ ΡΠ΅Π½Π½ΠΎΡΡΡ Π² ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ Π²Π΅ΡΠ΅ΠΉ, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ.
ΠΠ°Π΄Π½ΠΎ, Π·Π²ΡΡΠΈΡ Ρ
ΠΎΡΠΎΡΠΎ.
@htdvisser Π£ Π²Π°Ρ Π΅ΡΡΡ Π²ΠΎΠ·ΡΠ°ΠΆΠ΅Π½ΠΈΡ? Π Π΅ΡΠ»ΠΈ Π½Π΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΌΠ½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ/ΠΏΠ°ΠΊΠ΅ΡΡ Π΄Π»Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ Ρ Π²Π°Ρ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΡΡΠΈΠΌ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ (?).
ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠ°Π» ΡΠ°Π½Π΅Π΅, Π½Π°ΡΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ /api/v3/*
Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² cookie, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ CORS. ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π½Π°ΡΠ°ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² cookie, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ·ΡΡΠΈΡΡ Π½Π°ΡΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ CORS, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ Ρ
ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ» ΠΊ ΡΡΠΈΠΌ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌ ΡΠΎΡΠΊΠ°ΠΌ ΠΏΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΎΡΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² cookie.
ΠΠ°Ρ API β ΡΡΠΎ gRPC, Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ Authorization
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ Π½Π° gRPC ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΠ°. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅Π°Π½ΡΠΎΠ²ΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
SessionToken
ΠΊ pkg/auth/auth.go
Session
, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ API ΠΈ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ°.Authorization
Π² Π²ΠΈΠ΄Π΅ SessionToken.SessionToken
ΠΊΠ°ΠΊ case
ΠΊ switch tokenType {
Π² pkg/identityserver/entity_access.go
ΠΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΎΠ΄Π½Ρ Π²Π΅ΡΡ: ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΈ API Π²Π΅ΡΡΠΈΠΈ 3 Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² cookie Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ°Π·Π½ΡΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ.
ΠΠ΅ ΡΠ²Π΅ΡΠ΅Π½, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ. ΠΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π² Π½Π°ΡΠΈΡ
ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡΡ
.
ΠΠ°, ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ.
@kschiffer, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΡΠΎΠΎΠ±ΡΠΈΡΠ΅ Π½Π°ΠΌ, ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ Π·Π΄Π΅ΡΡ.
Π― Π½Π°ΠΏΠΈΡΠ°Π» ΡΠ΅Π·ΡΠΌΠ΅ Π·Π΄Π΅ΡΡ: https://github.com/TheThingsNetwork/lorawan-stack/pull/2850#issuecomment -657497193
Π₯ΠΎΡΠΎΡΠΎ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΡΡΠΎΡ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ Π·Π΄Π΅ΡΡ.
@kschiffer ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°Π² Π½Π°Π΄ ΡΡΠΈΠΌ:
- ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ oauth Π±ΡΠ΄Π΅Ρ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠΎΡΡΠΎΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΡΠΊΡΠ°Π½Π° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ.
Π΄Π°
- Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ°Π·Π΄ΡΠ°ΠΆΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
is.oauth.ui.*
ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ.
[...]- Π― ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½ Π² ΡΠΎΡΠ½ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΡΠ΅ΠΊΠ°, Π½Π΅ Π½Π°ΡΡΡΠ°Ρ CC.
- ΠΠ½Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ Π½Π°ΠΉΡΠΈ Π·Π΄Π΅ΡΡ ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΈ ΠΌΠ½Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ΅Π½ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»Π°Π΄
ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ»ΠΎΠΌΠ°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π² Π²Π΅ΡΡΠΈΠΈ 3, Π½ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π²Π΅ΡΡΠΈ Π½ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ ΡΡΠ°ΡΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠΉ ΠΈ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ TODO Ρ ΠΏΠΎΠΌΠ΅ΡΠΊΠΎΠΉ bump/major
ΡΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ ΡΡΠ°ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ.
ΠΠΎΡΡΠΎΠΌΡ Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π²Π²Π΅ΡΡΠΈ Π½ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°ΠΌΠ΅Π½ΠΎΠΉ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ. ΠΠ»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΡΡΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Ρ.Π΅. ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ ΡΡΠ°ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· is.oauth.ui.*
.
@kschiffer, ΠΊΠ°ΠΊΠΎΠΉ Π·Π΄Π΅ΡΡ ΡΡΠ°ΡΡΡ?
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ Π½ΠΎΠ²ΡΠΌΠΈ ΡΡΠ°ΡΠΎΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ Π·Π΄Π΅ΡΡ: #3453.
ΠΠ°Π»Π΅Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ PR-ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ Π°Π΄Π°ΠΏΡΠ°ΡΠΈΡ ΡΠ΅ΠΊΡΡΠΈΡ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠ² ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ Π±ΡΠ΅Π½Π΄ΠΈΠ½Π³Ρ.
@kschiffer, ΠΊΠ°ΠΊΠΎΠΉ Π·Π΄Π΅ΡΡ ΡΡΠ°ΡΡΡ?
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Account Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π² Π²Π΅ΡΡΠΈΠΈ 3.11. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ:
Π ΠΠΠ Π―ΠΠΠ. https://github.com/TheThingsNetwork/lorawan-stack/issues/488, ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΠΆΠ΅ Π·Π°ΠΊΡΡΡ.
ΠΡΠΎ Π±ΡΠ»ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΏΠΎΠ΄Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° Π½ΠΎΠ²ΡΡ Π²ΠΎΠΏΡΠΎΡΠ° Π΄Π»Ρ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎΡ, ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π·Π°ΠΊΡΡΡΡ?