рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ OAuth рдкреНрд░рд╡рд╛рд╣, рдЦрд╛рддрд╛ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ, рдЯреЛрдХрди рдкреНрд░рдмрдВрдзрди, рд╕рдВрдмрдВрдзрд┐рдд рдмреНрд░рд╛рдВрдбрд┐рдВрдЧ, рдЖрджрд┐ рдХреЗ рдЗрд░реНрдж-рдЧрд┐рд░реНрдж рдШреВрдордиреЗ рд╡рд╛рд▓реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдореБрджреНрджреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдирдП account
рдРрдк рдХреЗ рддрд╣рдд рдЗрди рд╕рднреА рдХреЛ рдЕрдзрд┐рдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдкреНрд░рдпрд╛рд╕ рд╣реИ рдЬреЛ рдзреНрдпрд╛рди рд░рдЦреЗрдЧрд╛ рдЗрди рд╕рднреА рдЪрд┐рдВрддрд╛рдУрдВред
рдПрдХ рдРрдк рдЬреЛ рдУрдПрде рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдЦрд╛рддреЛрдВ рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЪрд┐рдВрддрд╛рдУрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлреАрдЪрд░реНрдб рдФрд░ рдмреНрд░рд╛рдВрдбреЗрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдпреВрдЖрдИ рд╣реИ
рд╡реЗрдм
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯрддрд╛ рдФрд░ рд╕рдВрджрд░реНрдн рдХреА рдХрдореА рд╣реИред OAuth рдРрдк рдХреЛ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЗрдХрд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирдирд╛ рдХрдард┐рди рд╣реИред рдХрд╛рд░рдг рд╣реИрдВ:
рдореИрдВрдиреЗ рддреАрди рд╡рд╛рдпрд░рдлреНрд░реЗрдо рдмрдирд╛рдП рд╣реИрдВ рдЬреЛ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЕрдВрджрд╛рдЬрд╛ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЦрд╛рддрд╛ рдРрдк рдХреА рдХрд▓реНрдкрдирд╛ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реВрдВ:рд╡рд╛рдпрд░рдлреНрд░реЗрдо рджреЗрдЦреЗрдВ
(рдКрдкрд░ рджрд╛рдИрдВ рдУрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреНрд░реЙрдкрдбрд╛рдЙрди рдореЗрдВ рдПрдХреАрдХреГрдд рдЦрд╛рддрд╛ рд╕реНрд╡рд┐рдЪрд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ)
рд╣рд╛рдВред @johanstokking @htdvisser , рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред
рд╕рдВрджрд░реНрдн https://github.com/TheThingsIndustries/lorawan-stack/issues/1659
рдХрдВрд╕реЛрд▓ рдФрд░ рдУрде рдкреНрд░рджрд╛рддрд╛ рдХреЗ рдмреАрдЪ рд╕рдВрдкреВрд░реНрдг рд▓реЙрдЧрд┐рди/рд▓реЙрдЧрдЖрдЙрдЯ рднреНрд░рдо рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореЗрд░реА рдпреЛрдЬрдирд╛ рдпрд╣рд╛рдВ рд╣реИ:
Account
рд▓реЛрдЧреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реА рд╣реЗрдбрд░ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП рднреА рдХрд░рддреЗ рд╣реИрдВ (cc @pierreph)/console/login
/account/login
, рдЬрдм рдЙрд╕рдХреЗ рдкрд╛рд╕ рдХреЛрдИ (рд╡реИрдз) рдкрд╣реБрдВрдЪ рдЯреЛрдХрди рдирд╣реАрдВ рд╣реИ/users/logout
рдорд╛рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд▓реЙрдЧрдЖрдЙрдЯ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕реЗ рдХрд╣реАрдВ рд╕реЗ рднреА рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИрдЕрдЧрд░ рдореБрдЭреЗ рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ рддреЛ рдореИрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреВрдВрдЧрд╛ред
рдПрдХ рдмрдбрд╝реА рдпреЛрдЬрдирд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рдХрдВрд╕реЛрд▓ рдХреЗ рд╕реНрдкрд╖реНрдЯ рд▓реЙрдЧрдЖрдЙрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпреВрдПрдХреНрд╕ рдореЗрдВ рдУрдПрде рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдЧ рдЗрди рд░рд╣рдирд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдиреАрдЪреЗ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдХреНрд░реЙрд╕-рдУрд░рд┐рдЬрд┐рдирд▓ рд▓реЙрдЧрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рджреЛ-рдЪрд░рдгреАрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд╣реАрдВ рд╣реЛрдЧрд╛; рдХрдВрд╕реЛрд▓ рд╕реНрдЯреЛрд░ рдХрд┐рдП рдЧрдП рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП "рдкреЗрдЬ" рд▓реЙрдЧрдЖрдЙрдЯ рдХрд░реЗрдВ, рдлрд┐рд░ рдЬреЗрдиреЗрд░рд┐рдХ рд▓реЙрдЧрдЖрдЙрдЯ рдкреЗрдЬ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЕрдХрд╛рдЙрдВрдЯ рдРрдк рд▓реЙрдЧ рдЖрдЙрдЯ рд╣реЛрддрд╛ рд╣реИ? рдпрд╛ рдЖрдк рдЗрд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХреЗ рдмрд┐рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд▓реЙрдЧрдЖрдЙрдЯ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ?
рд▓реЙрдЧрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП, рд╣рдо OpenID Connect рд▓реЙрдЧрдЖрдЙрдЯ рд╕реЗ рдХреБрдЫ рдкреНрд░реЗрд░рдгрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЪреНрдЫрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдпрд╣рд╛рдБ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: https://medium.com/@robert.broeckelmann/openid -connect-logout-eccc73df758f
рдПрдХ рдмрдбрд╝реА рдпреЛрдЬрдирд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рдХрдВрд╕реЛрд▓ рдХреЗ рд╕реНрдкрд╖реНрдЯ рд▓реЙрдЧрдЖрдЙрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпреВрдПрдХреНрд╕ рдореЗрдВ рдУрдПрде рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдЧ рдЗрди рд░рд╣рдирд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдиреАрдЪреЗ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдХреНрд░реЙрд╕-рдУрд░рд┐рдЬрд┐рдирд▓ рд▓реЙрдЧрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рджреЛ-рдЪрд░рдгреАрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд╣реАрдВ рд╣реЛрдЧрд╛; рдХрдВрд╕реЛрд▓ рд╕реНрдЯреЛрд░ рдХрд┐рдП рдЧрдП рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП "рдкреЗрдЬ" рд▓реЙрдЧрдЖрдЙрдЯ рдХрд░реЗрдВ, рдлрд┐рд░ рдЬреЗрдиреЗрд░рд┐рдХ рд▓реЙрдЧрдЖрдЙрдЯ рдкреЗрдЬ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЕрдХрд╛рдЙрдВрдЯ рдРрдк рд▓реЙрдЧ рдЖрдЙрдЯ рд╣реЛрддрд╛ рд╣реИ? рдпрд╛ рдЖрдк рдЗрд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХреЗ рдмрд┐рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд▓реЙрдЧрдЖрдЙрдЯ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ?
рджреЛ-рдЪрд░рдгреАрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдареАрдХ рд╣реИред рдореЗрд░реА рдЪрд┐рдВрддрд╛ рдпрд╣ рдереА рдХрд┐ рдЦрд╛рддрд╛ рдРрдк рдХрд╛ рд▓реЙрдЧрдЖрдЙрдЯ рд╕реАрдПрд╕рдЖрд░рдПрдл рдЕрдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд▓реЙрдЧрдЖрдЙрдЯ рд▓рд┐рдВрдХ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рдХрд┐рд╕реА рдХреЛ рдЕрдкрдиреЗ рдЦрд╛рддреЗ рд╕реЗ рд▓реЙрдЧ рдЖрдЙрдЯ рдХрд░рдиреЗ рдХрд╛ рд▓рд╛рд▓рдЪ рджреЗ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ v2 рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рднреА рд╕рдВрднрд╡ рд╣реИ ( рдпрд╣рд╛рдВ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ рдЖрдк рд▓реЙрдЧ рдЖрдЙрдЯ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ )ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ рд▓реЗрдХрд┐рди рдмрд┐рд▓реНрдХреБрд▓ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдирд╣реАрдВ рд╣реИред
рдореИрдВрдиреЗ рдирдП рдЦрд╛рддрд╛ рдРрдк рдХреЗ рд▓рд┐рдП рдЕрдм рдХрд╛рдлреА рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ:
рд╕реНрдЯреИрдХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдЪрд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЦрд╛рддрд╛ рдРрдк рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред
рдЕрднреА, "рд╢рдкрде рдРрдк" рдХреЗрд╡рд▓ рдПрдХ рдПрд╕рдкреАрдП рд╣реИ рдЬреЛ рдУрде рд╕рд░реНрд╡рд░ (рд▓реЙрдЧрд┐рди, рд▓реЙрдЧрдЖрдЙрдЯ рдФрд░ рдЕрдиреНрдп рдЦрд╛рддреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ) рдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдорд╛рдкрди рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
@htdvisser рдиреЗ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рд╣рдорд╛рд░рд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рдЪрд╛рд░ рдкрд╛рд╕рд╡рд░реНрдб рдЕрдиреБрджрд╛рди рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦрд╛рддрд╛ рдРрдк рдХреЛ рдЕрд▓рдЧ рдУрде рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрдирд╛ рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЪрд░реНрдЪрд╛ рдЦреЛрд▓рдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐:
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА @htdvisser рд╕реЗ рдХрд╣рд╛ рдерд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдкреВрд░рд╛ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг/рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкрд╣рд▓реВ рдореЗрд░реЗ рд▓рд┐рдП рдХреБрдЫ рд╣рдж рддрдХ рднрд╛рд░реА рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реБрд░рдХреНрд╖рд╛-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред
рд╣рдореЗрдВ рдЬреЛ рд▓рдХреНрд╖реНрдп рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдПрдХ рдРрд╕рд╛ рдкреНрд░рд╡рд╛рд╣ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдореВрд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЬреИрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░рд╛рддрд╛ рд╣реИ ( рдореЗрд░реА рдЕрдиреНрдп рдЯрд┐рдкреНрдкрдгреА рднреА рджреЗрдЦреЗрдВ), рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд▓реЙрдЧрд┐рди рдФрд░ рд▓реЙрдЧрдЖрдЙрдЯ рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИрдВ рдФрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдкреНрд░рдорд╛рдгрд┐рдд рд╕реНрдерд┐рддрд┐ рдХреЗ рдмреАрдЪ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рджрд╛рддрд╛ред
рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдЦрд╛рддрд╛ рдРрдк рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорджрдж рдФрд░ рдЗрдирдкреБрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╣рдо рдЗрд╕рдХрд╛ рд╕рдордиреНрд╡рдп рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рд╕реНрд░реЛрдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░, "рдЖрдзрд┐рдХрд╛рд░рд┐рдХ" рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдкрд╛рд╕рд╡рд░реНрдб рдЕрдиреБрджрд╛рди рдкреНрд░рдХрд╛рд░ рдХреЛ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рд╣рд╛рдВ, рдкрд╛рд╕рд╡рд░реНрдб рдЕрдиреБрджрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣рд╛рдВ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдФрд░ рддрд░реНрдХ рджреЗрдЦреЗрдВ: https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13#section -3.4
рд╡рд░реНрддрдорд╛рди рдореЗрдВ #2148 . рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд░реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рддреЛ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рдЗрдирдкреБрдЯ рдЪрд╛рд╣рд┐рдПред
рдЦрд╛рддрд╛ рдРрдк рдХрд╛ рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рд╡рд░реНрддрдорд╛рди рдУрде рдРрдк рдХреЛ рдмрджрд▓рдирд╛ рдФрд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдФрд░ рд╕рддреНрд░ рдкреНрд░рдмрдВрдзрди (рдУрдкреА рджреЗрдЦреЗрдВ) рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдерд╛ред рдЗрд╕рдХреЗ рд╕рд╛рде рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдРрдк рдХреЛ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЦрд╛рддрд╛ рдРрдк рдПрдХ OAuth рдкреНрд░рджрд╛рддрд╛ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рджреЛрдиреЛрдВ рд╣реЛрдЧрд╛ред
рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдПрдХ рдирдпрд╛ OAuth рдХреНрд▓рд╛рдЗрдВрдЯ ( account
) рдФрд░ рдлреНрд░рдВрдЯрдПрдВрдб-рд╡рд╛рд░ рдкреЗрд╢ рдХрд░рдирд╛ рдерд╛, рддрд╛рдХрд┐ рд╡рд░реНрддрдорд╛рди OAuth рдРрдк рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдорд┐рд╢реНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ OAuth рдкреНрд░рджрд╛рддрд╛ (рд▓реЙрдЧрд┐рди, рд░рдЬрд┐рд╕реНрдЯрд░, рдорд╛рдиреНрдп рдЦрд╛рддрд╛, рдЖрджрд┐) рдФрд░ рдЦрд╛рддрд╛ рдРрдк рдХреНрд▓рд╛рдЗрдВрдЯ (рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рд╕рддреНрд░ рдкреНрд░рдмрдВрдзрди, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рдмрдВрдзрди) рджреЛрдиреЛрдВ рдПрдХ рд╣реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИрдВ, рдЬрдмрдХрд┐ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ, рд╡рд╣рд╛рдБ OAuth рдкреНрд░рджрд╛рддрд╛ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреАрдЪ рдПрдХ рддрдХрдиреАрдХреА рдЕрд▓рдЧрд╛рд╡ рд╣реИред рдмреИрдХрдПрдВрдб рдкрд░, рдЦрд╛рддрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ oauth
рдкреИрдХреЗрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЬрд╛рдПрдЧрд╛ред рдлреНрд░рдВрдЯрдПрдВрдб-рд╡рд╛рд░ рд╣рдо рдПрдХ рд╣реА рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ ( account.js
) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛрдиреЛрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдПрдХ рд╣реА рдРрдк рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕реА рддрд░рд╣, рд░реВрдЯрд┐рдВрдЧ рдЗрд╕ рд╕рдореНрдорд┐рд╢реНрд░рдг рдХреЛ рджрд░реНрд╢рд╛рдПрдЧрд╛, рдЬреИрд╕реЗ:
/account/login
[OAuth рдкреНрд░рджрд╛рддрд╛ рдкрд░рдд]/account/register
[OAuth рдкреНрд░рджрд╛рддрд╛ рдкрд░рдд]/account/forgot-password
[OAuth рдкреНрд░рджрд╛рддрд╛ рдкрд░рдд]/account/client/login/ttn-stack
[OAuth рдХреНрд▓рд╛рдЗрдВрдЯ рд▓реЗрдпрд░]/account/client/oauth/callback
рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛрдб рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП [OAuth рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░рдд]/account
рдЕрд╡рд▓реЛрдХрди рдкреГрд╖реНрда [OAuth рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░рдд]рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рд╣рдо OAuth рдкреНрд░рджрд╛рддрд╛ ( /oauth
рдорд╛рдзреНрдпрдо рд╕реЗ pkg/oauth
) рдХреЛ рдЫреЛрдбрд╝рдХрд░, рджреЛрдиреЛрдВ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЦрд╛рддрд╛ рдРрдк ( /account
рдорд╛рдзреНрдпрдо рд╕реЗ pkg/account
рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд▓рд╛рдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред ) рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЪреАрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ, рдЬреИрд╕реЗ рд╣рдо рдХрдВрд╕реЛрд▓ рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВред OAuth рдкреНрд░рджрд╛рддрд╛ рддрдм рдХреЗрд╡рд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддрд╛ рдкрдВрдЬреАрдХрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕рдХрд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреНрд░рдорд╛рдгрд┐рдд рджреГрд╢реНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд▓реЙрдЧрд┐рди рдХреЗ рдмрд╛рдж, рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЦрд╛рддрд╛ рдРрдк рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реЛрдЧрд╛, рдЬреЛ рддрдм рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓рд╛ рд╕рдорд╛рдзрд╛рди рдХреБрдЫ рднреНрд░рдо рд╕реЗ рдмрдЪ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдЦрд╛рддрд╛ рдкреНрд░рдмрдВрдзрди рдХреЗ рдЗрд░реНрдж-рдЧрд┐рд░реНрдж рдШреВрдо рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрдиреНрдп рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреЛ рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рд╕рдорд╛рдзрд╛рди рдХреНрд▓реАрдирд░ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЕрд▓рдЧрд╛рд╡ рдХреЛ рдХреИрд╕реЗ рд╕рдВрдкреНрд░реЗрд╖рд┐рдд/рдмреНрд░рд╛рдВрдб рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЬреИрд╕реЗ рджреЛрдиреЛрдВ рдХреЛ рдЕрднреА рднреА "рдЦрд╛рддрд╛ рдРрдк" рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╛ рдпрд╣ The Things Stack Single Sign On
рдФрд░ The Things Stack Account Application
?
рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдЕрдкрдиреА рд░рд╛рдп рдмрддрд╛рдПрдВред
рд╣рдореНрдо, рдПрдХ рдХрджрдо рдкреАрдЫреЗ рд╣рдЯрддреЗ рд╣реБрдП, рдЦрд╛рддрд╛ рдРрдк рдХреЛ OAuth рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдХреНрдпрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╣реИ? рд╣рдо рд╡рд╣рд╛рдВ OAuth рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдЙрди рд╕рднреА рдХреЛ рдПрдХ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдЖрд░рдкреАрд╕реА рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдпрд╣реА рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИред
рд╣рдореЗрдВ OAuth рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЬреЛ рдмрд╛рд╣рд░реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "рдж рдерд┐рдВрдЧреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдХрдореНрдпреБрдирд┐рдЯреА" - рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдмрдВрдзрди - рдЬреЛ рдХрд┐ рдерд┐рдВрдЧреНрд╕ рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдХрд╛рдИ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрдВрдХ @kschiffer рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдКрдкрд░ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ /api/v3/*
рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреБрдХреА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ CORS-рд╕рдХреНрд╖рдо рд╣реИрдВред рд╡реЗ рдХреЗрд╡рд▓ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдФрд░ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
- рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕реЗрдЯрд┐рдВрдЧ (рдирд╛рдо, рдИрдореЗрд▓, рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЪрд┐рддреНрд░)
- рд╕рддреНрд░ рдкреНрд░рдмрдВрдзрди (рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рдирд┐рд░рд╕реНрдд рдХрд░реЗрдВ)
- рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рдмрдВрдзрди (рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рдирд┐рд░рд╕реНрдд рдХрд░реЗрдВ)
- (рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреНрдп TTES рд╕рдВрдмрдВрдзрд┐рдд рдореЗрдЯрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕)
рдЙрди рд╕рднреА рдХреЛ рдПрдХ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдЖрд░рдкреАрд╕реА рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдпрд╣реА рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИред
рд╣рдо рдХрдВрд╕реЛрд▓ рдХрд╛ рдпреЗ рд╣рд┐рд╕реНрд╕рд╛ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдХрдВрд╕реЛрд▓ рдХреБрдЫ рд╣рдж рддрдХ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдорд┐рд▓рд╛рдПрдЧрд╛ред рдореИрдВ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рджреЗрдЦ рд╕рдХрддрд╛ рдерд╛ рдЬрд╣рд╛рдВ рдЕрдиреНрдп рд╕рднреА рдХрдВрд╕реЛрд▓ рдХрд╛рд░реНрдпрд╛рддреНрдордХрддрд╛рдУрдВ рдХреЗ рдКрдкрд░реА рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рдмрд┐рдирд╛ рдЦрд╛рддрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдУрд╡рд░рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЖрдо рддреМрд░ рдкрд░, рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдорд▓реЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрдВрд╕реЛрд▓ рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рдпрд╛ рддреЛ рдЗрд╕реЗ рдЯреАрдЯреАрдПрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рдкреНрд░рдмрдВрдзрди рдордВрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╣рдо рдЕрдзрд┐рдХ рдкрд░рдорд╛рдгреБ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрд▓рдЧрд╛рд╡ рдХреЗ рд╕рд╛рде рдЪрд┐рдкрдХреЗ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЪрд┐рдВрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдРрдкреНрд╕/рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рд░рдгрдиреАрддрд┐рдХ рд╕рд╡рд╛рд▓ рд╣реИред рдореИрдВ рджреЛрдиреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рджреЗрдЦрддрд╛ рд╣реВрдВред
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХрдВрд╕реЛрд▓ (рд╕рднреА рдХрдВрд╕реЛрд▓, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ рдХрдВрд╕реЛрд▓ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░ рдкреВрд░реНрдг рдЕрдзрд┐рдХрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдзрд┐рдХреГрдд OAuth рдХреНрд▓рд╛рдЗрдВрдЯ, рд╕рддреНрд░, рдкреНрд░рд╛рдердорд┐рдХ рдИрдореЗрд▓ рдкрддрд╛, рд╕рдВрдкрд░реНрдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдмрдВрдзрди рдРрдк (рдЦрд╛рддрд╛ рдРрдк) рд╣реЛрдирд╛ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИред
рд╡рд╛рдХрдИ, рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИред рдлрд┐рд░ рдпрд╣ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╢реНрди рдкрд░ рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИред
рдореЗрд░рд╛ рд▓реЗрдирд╛ рд╣реИ:
рдорд┐рд╢реНрд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг:
рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг:
рдореИрдВ рдорд┐рд╢реНрд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдУрд░ рдЭреБрдХрддрд╛ рд╣реВрдВред
- рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕реЗрдЯрд┐рдВрдЧ (рдирд╛рдо, рдИрдореЗрд▓, рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЪрд┐рддреНрд░)
- рд╕рддреНрд░ рдкреНрд░рдмрдВрдзрди (рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рдирд┐рд░рд╕реНрдд рдХрд░реЗрдВ)
- рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рдмрдВрдзрди (рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рдирд┐рд░рд╕реНрдд рдХрд░реЗрдВ)
- (рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреНрдп TTES рд╕рдВрдмрдВрдзрд┐рдд рдореЗрдЯрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕)
рдпрд╣ рдЦрд╛рддрд╛ рдРрдк рд╣реИ, рд╣реИ рдирд╛? OAuth рдирд╣реАрдВ?
- рд╢рдкрде рдРрдк рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдПрдХ рдирдпрд╛ рдРрдк рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╕рдордЭрджрд╛рд░ рдмреНрд░рд╛рдВрдбрд┐рдВрдЧ рдФрд░ рд╕рдВрдЪрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рддрдм рднреА OAuth рдРрдк рдХреНрдпрд╛ рд╣реИ?
рдХреНрдпрд╛ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ OAuth рдХреНрд▓рд╛рдЗрдВрдЯ рдЦрд╛рддрд╛ рдРрдк рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдЦрд╛рддрд╛ рдРрдк рдореЗрдВ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ, рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдирдП рд╕рдорд╛рдкрди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ?
рдпрд╣ рдЦрд╛рддрд╛ рдРрдк рд╣реИ, рд╣реИ рдирд╛? OAuth рдирд╣реАрдВ?
рд╣рд╛рдБ, рдпрд╣ рдЦрд╛рддрд╛ рдРрдк рд╣реИред рд▓реЗрдХрд┐рди рдпреЛрдЬрдирд╛ рдпрд╣ рдереА рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ OAuth рдРрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ рдХреБрдЫ рд╣реИ рд╡рд╣ рдЦрд╛рддрд╛ рдРрдк рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЬрд╛рдПред
рддрдм рднреА OAuth рдРрдк рдХреНрдпрд╛ рд╣реИ?
рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП (OAuth рдкреНрд░рд╡рд╛рд╣ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ), рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрдВрдЬреАрдХрд░рдг, рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рд╛рдзрд┐рдХрд░рдг, рдкрд╛рд╕рд╡рд░реНрдб рд░реАрд╕реЗрдЯред рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ OAuth рдХреНрд▓рд╛рдЗрдВрдЯ рдЦрд╛рддрд╛ рдРрдк рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдЦрд╛рддрд╛ рдРрдк рдореЗрдВ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ, рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдирдП рд╕рдорд╛рдкрди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ?
рд╕рдорд╕реНрдпрд╛ рджреВрд╕рд░реА рддрд░рдл рд╣реИ, рд╣рдо рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдУрдПрде рдРрдк рдХреЛ рдХреЗрд╡рд▓ рдЙрди рдХрд╛рд░реНрдпрд╛рддреНрдордХрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЦрд╛рддрд╛ рдРрдк рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рдЪрд┐рдХрди рдФрд░ рдЕрдВрдбреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдпрджрд┐ рдЦрд╛рддрд╛ рдРрдк рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдУрдВ (рд╕рддреНрд░реЛрдВ, рдкреНрд░рд╛рдзрд┐рдХрд░рдгреЛрдВ, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдорд╛рдзреНрдпрдо рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП OAuth рдРрдк рдХреЗ рд╕рддреНрд░ рдХреБрдХреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рддреЛ рдпрд╣ рдЕрд▓рдЧ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЬреЛ рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдЕрд╕рдВрднрд╡ рд╣реИред
рдХреНрдпрд╛ OAuth рдРрдк рдПрдХ рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рдЪреАрдЬрд╝ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ OAuth рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдлрд╝реНрд▓реЛ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣рд╛ рд╣реИ? рдпрд╛ рдпрд╣ рд╕реНрд╡рдпрдВ рдПрдХ OAuth рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИ?
рдореЗрд░рд╛ рдЬреЛрд░:
рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╡рд░реНрддрдорд╛рди OAuth рдРрдк рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдорд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛
account
) рдФрд░ рдлреНрд░рдВрдЯрдПрдВрдб-рд╡рд╛рд░ рдкреЗрд╢ рдХрд░рдирд╛ рдерд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ OAuth рдкреНрд░рджрд╛рддрд╛ (рд▓реЙрдЧрд┐рди, рд░рдЬрд┐рд╕реНрдЯрд░, рдорд╛рдиреНрдп рдЦрд╛рддрд╛, рдЖрджрд┐) рдФрд░ рдЦрд╛рддрд╛ рдРрдк рдХреНрд▓рд╛рдЗрдВрдЯ (рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рд╕рддреНрд░ рдкреНрд░рдмрдВрдзрди, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рдмрдВрдзрди) рджреЛрдиреЛрдВ рдПрдХ рд╣реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИрдВ, рдЬрдмрдХрд┐ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ, рд╡рд╣рд╛рдБ OAuth рдкреНрд░рджрд╛рддрд╛ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреАрдЪ рдПрдХ рддрдХрдиреАрдХреА рдЕрд▓рдЧрд╛рд╡ рд╣реИред рдмреИрдХрдПрдВрдб рдкрд░ , рдЦрд╛рддрд╛ рдХреНрд▓рд╛рдЗрдВрдЯoauth
рдкреИрдХреЗрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЬрд╛рдПрдЧрд╛ред
рдореИрдВ рдпрд╣рд╛рдБ рджреЗрдЦрддрд╛ рд╣реВрдБ;
oauth
рдкреИрдХреЗрдЬрдореИрдВ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЕрднреА рднреА рдХреНрдпрд╛ рд╣реИред
рддреЛ рдРрд╕реА рдХреМрди рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╣реИрдВ рдЬреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рд╕рддреНрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдУрдПрде рдХреЛ рдЫреВрдП рдмрд┐рдирд╛ 1-6 рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рд╣реИ рдирд╛?
рд╣рд╛рдБ рдХреНрд╖рдорд╛ рдХрд░реЗрдВред рд╣рдорд╛рд░реЗ рдпрд╣рд╛рдВ рдХрдИ рдЕрдирдлрд┐рдХреНрд╕ рд╢рдмреНрдж рд╣реИрдВ рдЬреЛ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛рддреЗ рд╣реИрдВред рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреА рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рджреЗрддрд╛ рд╣реИ ред
рддреЛ рдЪрд▓рд┐рдП рдпрдерд╛рд╕реНрдерд┐рддрд┐ рд▓реЗрддреЗ рд╣реИрдВ:
OAuth рдкреНрд░рджрд╛рддрд╛
рд╡рд╣ рдЗрдХрд╛рдИ рдЬреЛ OAuth 2.0 рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг (рдФрд░ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА рдкреНрд░рдорд╛рдгреАрдХрд░рдг) рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ pkg/oauth
рдкреИрдХреЗрдЬ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП OAuth рдРрдк (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рд▓реЙрдЧрд┐рди, рдкрдВрдЬреАрдХрд░рдг, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рджреГрд╢реНрдп, рдЖрджрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛)ред
OAuth рдРрдк
рдпрд╣ рдлреНрд░рдВрдЯрдПрдВрдб рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИред рд╣рдорд╛рд░реЗ рдлреНрд░рдВрдЯрдПрдВрдб рдХреЛрдб рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдРрдк рд╣реЛрддреЗ рд╣реИрдВ (рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде oauth.js
/ console.js
) рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХреЛрдВ рдФрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдЬреИрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рднрд╛рдЧреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ
OAuth рдХреНрд▓рд╛рдЗрдВрдЯ
рдПрдХ рдкрдВрдЬреАрдХреГрдд рдХреНрд▓рд╛рдЗрдВрдЯ рдЬреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП OAuth рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрдВрд╕реЛрд▓ рдпрд╛ CLIред
рд╢рдкрде рдкреИрдХреЗрдЬ
рдЧреЛ рдкреИрдХреЗрдЬ рдЬреЛ OAuth рдкреНрд░рджрд╛рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╡рд╣ pkg/oauth
ред
рддреЛ рдЖрдк рджреЗрдЦрд┐рдП, рдпрд╣рд╛рдВ рддреАрди рдпрд╛ рдЪрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рддреЗрдВ рдЪрд▓ рд░рд╣реА рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдЗрд╕ рд╕рдордп рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рднреА рднреВрдорд┐рдХрд╛рдПрдБ рдирд┐рднрд╛рдПред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рд╕рддреНрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдУрдПрде рдХреЛ рдЫреВрдП рдмрд┐рдирд╛ 1-6 рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рд╣реИ рдирд╛?
рд╣рд╛рдВред рдУрде/рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЗ рдмрд┐рдирд╛ 1-4 рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реИрдВред 5 рдФрд░ 6 рдХреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред 7. ii рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ 5 рдФрд░ 6 рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЗ рдмрд┐рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдВрдЧреЗ рддреЛ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдиреНрдп рд╢рдкрде рдЧреНрд░рд╛рд╣рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рдлрд┐рд░ рднреА рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо рдЬрд┐рд╕ рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЦрд╛рддрд╛ рдРрдк рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдПрдХрдорд╛рддреНрд░ рд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ 5 рдФрд░ 6 рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЗ рдмрд┐рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдВрдЧреЗ рддреЛ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдиреНрдп рд╢рдкрде рдЧреНрд░рд╛рд╣рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рдлрд┐рд░ рднреА рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо рдЬрд┐рд╕ рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЦрд╛рддрд╛ рдРрдк рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдПрдХрдорд╛рддреНрд░ рд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рд╣реАред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред рдпрд╣ "рд╕реБрдбреЛ рдореЛрдб" рдХреЗ рд▓рд┐рдП рднреА рдмреЗрд╣рддрд░ рдЖрдзрд╛рд░ рд╣реИ, рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддрд╛ рдРрдк рдореЗрдВ _only_ рдЪреАрдЬреЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рдкрд╛рд╕рд╡рд░реНрдб рдлрд┐рд░ рд╕реЗ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рджред рддреЛ рд╣рд╛рдБ, OAuth рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдЦрд╛рддрд╛ рдРрдк рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреЗ рдмреАрдЪ рдХреБрдЫ рдУрд╡рд░рд▓реИрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣ рдУрд╡рд░рд▓реИрдк рдореБрдЭреЗ рдмрдбрд╝рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ред рдореИрдВ рдЦрд╛рддрд╛ рдРрдк рдХреЛ рд╕рдорд░реНрдкрд┐рдд рдЪреАрдЬреЛрдВ рдХреЛ рд░рдЦрдиреЗ рдореЗрдВ рдореВрд▓реНрдп рджреЗрдЦрддрд╛ рд╣реВрдВред
рдареАрдХ рд╣реИ, рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред
@htdvisser рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рд╣реИ? рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдлрд╛рдЗрд▓реЛрдВ/рдкреИрдХреЗрдЬреЛрдВ рдХреА рдУрд░ рд╕рдВрдХреЗрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рдЬрд▓реНрдж рд╣реА рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реЛрдЧрд╛ (?)
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереА, рд╣рдорд╛рд░реЗ /api/v3/*
рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреБрдХреА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ CORS-рд╕рдХреНрд╖рдо рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХреБрдХреА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ CORS рд╣реЗрдбрд░ рдкрд░ рдПрдХ рдЕрдЪреНрдЫреА рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рдХреЛрдИ рд╣рдорд▓рд╛рд╡рд░ рдЗрди рд╕рдорд╛рдкрди рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдХреБрдХреА-рдкреНрд░рдорд╛рдгрд┐рдд рдХреНрд░реЙрд╕-рдУрд░рд┐рдЬрд┐рдирд▓ рдЕрдиреБрд░реЛрдз рдХрд░реЗред
рд╣рдорд╛рд░рд╛ рдПрдкреАрдЖрдИ рд╕рднреА рдЬреАрдЖрд░рдкреАрд╕реА рд╣реИ, рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг Authorization
рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЕрдиреБрд░реЛрдз рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреАрдЖрд░рдкреАрд╕реА рдореЗрдВ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рддреНрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
SessionToken
рдкреНрд░рдХрд╛рд░ рдХреЛ pkg/auth/auth.go
Session
рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рдЧреБрдкреНрдд рднрд╛рдЧ рдЬреЛрдбрд╝реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдФрд░ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВредAuthorization
рд╢реАрд░реНрд╖рд▓реЗрдЦ рдореЗрдВ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИSessionToken
рдХреЛ case
рдХреЗ рд░реВрдк рдореЗрдВ switch tokenType {
рдореЗрдВ pkg/identityserver/entity_access.go
рдпрд╣рд╛рдВ рдПрдХ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ рдХрд┐ рдЦрд╛рддрд╛ рдРрдк рдФрд░ v3 рдПрдкреАрдЖрдИ рдХреЛ рдПрдХ рд╣реА рдореВрд▓ рд╕реЗ рдкрд░реЛрд╕рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛, рдХреБрдХреА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдорд╛рдгрди рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдореВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рдХрдо рд╕реЗ рдХрдо рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдореЗрдВ рд╕рдорд╛рди рдореВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд╣рд╛рдВ, рд╡реЗ рдПрдХ рд╣реА рдореВрд▓ рдХреЗ рд╣реЛрдВрдЧреЗред
@kschiffer рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рдкреНрд░рдЧрддрд┐ рдХреЛ рдХреИрд╕реЗ рдЕрдирд╡рд░реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдПрдХ рд╕рд╛рд░рд╛рдВрд╢ рд▓рд┐рдЦрд╛ рд╣реИ: https://github.com/TheThingsNetwork/lorawan-stack/pull/2850#issuecomment -657497193
рдареАрдХ рд╣реИ, рдЪрд▓рд┐рдП рдЙрд╕ рдмрд╛рддрдЪреАрдд рдХреЛ рдпрд╣рд╛рдБ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред
@kschiffer рдЗрд╕ рдкрд░ рдереЛрдбрд╝рд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:
- рдУрде рдРрдк рдХреЗ рдлреНрд░рдВрдЯрдПрдВрдб рднрд╛рдЧ рдореЗрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реНрдХреНрд░реАрди рд╣реЛрдЧреА
рд╣рд╛рдВ
- рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдЙрд╕рдХреЗ рд▓рд┐рдП
is.oauth.ui.*
рдХреЙрдиреНрдлрд┐рдЧ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдмрд╣реБрдд рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ
[...]- рдореИрдВ рд╕реАрд╕реА рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рд╕реНрдЯреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдХреИрд╕реЗ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реВрдВ, рдЗрд╕рдХреЗ рд╕рдЯреАрдХ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╣реВрдВ
- рдореИрдВ рдпрд╣рд╛рдВ рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреЗ рд╕рд╛рде рднрд╛рдЧреНрдп рд╕реЗ рдереЛрдбрд╝рд╛ рдмрд╛рд╣рд░ рд╣реВрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдЗрдирдкреБрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рд╣рдо V3 рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рддреЛрдбрд╝ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдирдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкреБрд░рд╛рдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдкреБрд░рд╛рдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдлрд╝реЙрд▓рдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкреБрд░рд╛рдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП bump/major
рд▓реЗрдмрд▓ рд╡рд╛рд▓рд╛ TODO рд╕рдорд╕реНрдпрд╛ рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рддреЛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рдирдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреЗрд╢ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдПрдХ рдкреВрд░реНрдг рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реЛрдЧрд╛ рдФрд░ рдирдпрд╛ рдЦрд╛рддрд╛ рдРрдк рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛ред рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рдирдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛рдиреА is.oauth.ui.*
рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдордЭрджрд╛рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдФрд░ рдкреБрд░рд╛рдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
@kschiffer рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐ рд╣реИ?
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирдП рдордЪрд╛рди рдкрд░ рдЕрдкрдирд╛ рдХрд╛рдо рдлрд┐рд░ рд╕реЗ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рдпрд╣рд╛рдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ: #3453
рдЗрд╕рдХреЗ рдмрд╛рдж рдкреНрд░рдорд╛рдгрд┐рдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдкреБрди: рдЖрдзрд╛рд░ рдмрдирд╛рдирд╛, рдареАрдХ рдХрд░рдирд╛ рдФрд░ PRing рдХрд░рдирд╛ рдФрд░ рд╡рд░реНрддрдорд╛рди рдбрд┐рдЬрд╝рд╛рдЗрдиреЛрдВ рдХреЛ рдирдИ рдмреНрд░рд╛рдВрдбрд┐рдВрдЧ рдореЗрдВ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╣реИред
@kschiffer рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐ рд╣реИ?
рдЦрд╛рддрд╛ рдРрдк 3.11 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрднреА рднреА рд▓рд╛рдкрддрд╛ рд╣реИрдВ:
рдареАрдХ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ https://github.com/TheThingsNetwork/lorawan-stack/issues/488 рдкрд╣рд▓реЗ рд╣реА рдмрдВрдж рд╣реИред
рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдореБрджреНрджрд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдХреЗ рд▓рд┐рдП рдПрдХ рдпрд╛ рджреЛ рдирдП рдореБрджреНрджреЗ рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдЗрд╕реЗ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ?