рдЖрдзреБрдирд┐рдХ рдкрд╣рдЪрд╛рди рдорд╛рдирдХ: OAuth 2.0, OpenID рдХрдиреЗрдХреНрдЯ, WebAuthn

рдЬрд╛рдиреЗ рдпрд╛ рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП? рдпрд╣ рд╕рд╡рд╛рд▓ рд╣реИтАж

рдЕрдм рдХрдИ рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рд╣рдо рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрдВрдЬреАрдХрд░рдг рдпрд╛ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрдЦрддреЗ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рд╕рд╛рдЗрдЯреЗрдВ рдмрд╛рд╣рд░реА рд╕реБрд░рдХреНрд╖рд╛ рдХреБрдВрдЬреА рдпрд╛ рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдХреЗ рдирд┐рд╢рд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред рдпрд╣ рдХреНрдпрд╛ рд╣реИ? рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рд╕реБрд░рдХреНрд╖рд╛ рдорд╛рдирдХреЛрдВ рдпрд╛ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди? рдХреНрдпрд╛ рд╣рдо рдЗрди рддрдХрдиреАрдХреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╡рд┐рдХрд╛рд╕ рдФрд░ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреА рдЬрд┐рдВрджрдЧреА рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЪрд▓реЛ рдареАрдХ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдм OAuth 2.0, OpenID Connect, WebAuthn, SAML 2.0, рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдореИрдиреЗрдЬрдореЗрдВрдЯ API рдЖрджрд┐ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдорд╛рдирдХ рдФрд░ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдБ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рддреАрди рд╕рдмрд╕реЗ рд╣реЛрдирд╣рд╛рд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ OAuth 2.0, OpenID Connect рдФрд░ WebAuthn рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред рдФрд░ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд▓рд╛рдирд╛ рд╣реИ, рд╣рдо рддреАрди рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд░реВрдк рдореЗрдВ GitHub рдФрд░ Google рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗредрдЬрд┐рд╕ рдкрд░ рдЬреНрдпрд╛рджрд╛рддрд░ рдЦрд╛рддреЗ рд╣реИрдВред

рдЫрд╡рд┐

OAuth 2.0


рдЪрд▓реЛ рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз OAuth 2.0 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕реЗ 2012 рдореЗрдВ RFC 6749: OAuth 2.0 рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред

OAuth 2.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд╛рдЗрдЯ рдХреЛ рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЕрдкрдирд╛ рдирд┐рдЬреА рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдЗрдЯ рдкрд░ рдЕрдкрдиреЗ рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдк рдлреЗрд╕рдмреБрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдкрд░ рдкрдВрдЬреАрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рд╕рд╛рдЗрдЯ рдХреЛ рдлреЗрд╕рдмреБрдХ рд╕реЗ рдЕрдкрдирд╛ рдирд╛рдо, рдИ-рдореЗрд▓ рдкрддрд╛ рдФрд░ рдЕрдиреНрдп рдирд┐рдЬреА рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред

рдЪрд▓реЛ рддрдХрдиреАрдХреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рд╕рд╛рдЗрдЯ рдХреЛ рдХреЙрд▓ рдХрд░реВрдВрдЧрд╛ред рдФрд░ MySite рдХрд┐рд╕реА рднреА рд╕рд╛рдЗрдЯ рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд╛рдо рджреЗрдЧрд╛ рдЬреЛ рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред

рдЫрд╡рд┐

рдорд╛рдирдХ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:

  • Resource Owner тАФ , MySite .
  • Client ( MySite) тАФ , Authorization Server Resource Server .
  • Authorization Server тАФ / , .
  • Resource Server тАФ , API. Authorization Server Resource Server .

Authorization flow


  • MySite :
  • MySite Name ( ), Homepage ( MySite) Callback (, )
  • рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА (рдЬрд┐рд╕реЗ рдХрднреА-рдХрднреА рдРрдкрд┐рдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реАрдХреНрд░реЗрдЯ рджреЗрддрд╛ рд╣реИред
  • рдбреЗрд╡рд▓рдкрд░ рдЖрдИрдбреА рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реАрдХреНрд░реЗрдЯ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдЕрдм рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реАред рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рд╡рд░рдг рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддрд░реНрдХ рд╣рдореЗрд╢рд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдВрдЧреЗ:

рдЫрд╡рд┐

  1. рдХреНрд▓рд╛рдЗрдВрдЯ (MySite) рдкрд░ рд░рд┐рд╕реЛрд░реНрд╕ рдУрдирд░ рд▓реЙрдЧреНрд╕, "рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд▓реЙрдЧ" рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рдЗрдЯ рдСрдерд░рд╛рдЗрдЬреЗрд╢рди рд╕рд░реНрд╡рд░ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддреА рд╣реИред
  2. рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рд░реНрд╡рд░ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдХреНрд░рд┐рдп рд╕рддреНрд░ рд╣реИ рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд▓реЙрдЧрд┐рди рдлрд╝реЙрд░реНрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
  3. рд░рд┐рд╕реЛрд░реНрд╕ рдУрдирд░ рдЕрдкрдиреЗ рдпреВрдЬрд╝рд░рдиреЗрдо / рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ MySite рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдпрд╛ рдИ-рдореЗрд▓ рдкрддрд╛ред
  4. рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рд░реНрд╡рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкрд░рд┐рдгрд╛рдо рдФрд░ "рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛрдб" рдХреЗ рд╕рд╛рде рдХреЙрд▓рдмреИрдХ рдкрддреЗ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред
  5. Client тАЬAuthorization CodeтАЭ, Client ID Client Secret.
  6. Authorization Server тАЬaccess tokenтАЭ JWT (JSON Web Token), . JWT тАЬrefresh tokenтАЭ, c .
  7. Client API, тАЬaccess tokenтАЭ.
  8. Resource Server тАЬaccess tokenтАЭ (, Authorization Server) .

OAuth 2.0 (GitHub)


рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ OAuth 2.0 рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕ рдкрд░ рдХрдИ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВред рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦ рдкрд╕рдВрдж рдЖрдпрд╛: NodeJS рдХреЗ рд╕рд╛рде GitHub OAuth 2.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдпрд╣ рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рджреЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рд╕рднреА рдЪрд░рдгреЛрдВ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ HTTP рдЕрдиреБрд░реЛрдз рдпрд╛ рд╡рдХреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓)ред рдЬрд╛рдУред

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, GitHub рдкрд░ рдЕрдкрдирд╛ рдЖрд╡реЗрджрди рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ: github.com/settings/applications/new

рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░реЗрдВ:


рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдХреЗ рднреАрддрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрддреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

GitHub рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

  • рдЧреНрд░рд╛рд╣рдХ рдЖрдИрдбреА: ab8ec08a620c2
  • рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реАрдХреНрд░реЗрдЯ: e6fdd52b0a99e8fbe76b05c1b7bb93c1e

рдмреЗрд╢рдХ, рд╕рднреА рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕рднреА рдореВрд▓реНрдп рдирдХрд▓реА рд╣реИрдВред

рдпрд╣ рдХреИрд╕реЗ GitHub рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА рдФрд░ рд╕реАрдХреНрд░реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЫрд╡рд┐

рдЕрдм рд╣рдо рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЪрд░рдг 1 рдкрд╣рд▓реЗ рд╣реА рдкреВрд░рд╛ рд╣реЛ рдЪреБрдХрд╛ рд╣реИ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ MySite рдкрд░ рд▓реЙрдЧ рдЗрди рдХрд┐рдпрд╛ рдФрд░ "GitHub рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧ рдЗрди" рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ред рдХреЙрд▓ рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдЪрд░рдг 2 REST рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдХреЙрд▓ рд╣реИ:

https://github.com/login/oauth/authorize?client_id=ab8ec08a620c2


  • рдкрддрд╛ github рдкрд░ рд▓реЙрдЧрд┐рди рдмрд┐рдВрджреБ рд╣реИ
  • client_id рдкрдВрдЬреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдЬрд╛рд░реА рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА рд╣реИ

рдЗрд╕ рдХреЙрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, GitHub рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

рдЫрд╡рд┐

рдЪрд░рдг 3: GitHub

рдЪрд░рдг 4 рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░реЗрдВ : GitHub рд╣реЛрдордкреЗрдЬ рдкрд░ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╣рдо рдХреЛрдб рджреЗрдЦрддреЗ рд╣реИрдВ:

http://MySite/home?code=a29b348f63d21

рдЗрд╕ рдкрддреЗ рдкрд░ рдХреЛрдИ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рд╛рдЗрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд▓реЗ рдЪрд░рдг 5 рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреЗрдЬреЗ рдЧрдП рдХреЛрдб рдХреЛ рдЬрд╛рдиреЗрдВ:

https://github.com/login/oauth/access_token?client_id=ab8ec08a620c2&
client_secret=e6fdd52b0a99e8fbe76b05c1b7bb93c1e&
code=a29b348f63d21

  • рдкрддрд╛ GitHub рдкрд░ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдмрд┐рдВрджреБ рд╣реИ
  • client_id рдкрдВрдЬреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдЬрд╛рд░реА рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА рд╣реИ
  • client_secret рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реАрдХреНрд░реЗрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
  • рдХреЛрдб рдХреЗрд╡рд▓ рднреЗрдЬрд╛ рдЧрдпрд╛ рдХреЛрдб рд╣реИ

рдЪрд░рдг 6: рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ:

access_token=31b71cbd372acdbb20ec1644b824f3dd0&scope=&token_type=bearer

рдЪрд░рдг 7: access_token рдХреЛ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рд╣реЗрдбрд░ рдореЗрдВ рдбрд╛рд▓реЗрдВ рдФрд░ GitHub API рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ:

curl -H "Authorization: token 31b71cbd372acdbb20ec1644b824f3dd0" https://api.github.com/user

рдЪрд░рдг 8: рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдореЗрдВ JSON рд╕реЗ рдореЗрд░реЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк MySite рдкрд░ рдПрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

{
  "login": "AlexeySushkov",
  "html_url": "https://github.com/AlexeySushkov",
  "repos_url": "https://api.github.com/users/AlexeySushkov/repos",
  "name": "Alexey Sushkov",
  "blog": "http://sushkov.ru",
  "location": "St.Petersburg, Russia",
  "email": "alexey.p.sushkov@gmail.com",
 ..
}  

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдордиреЗ рдХреЗрд╡рд▓ рдПрдХ OAuth 2.0 рдкрд░рд┐рджреГрд╢реНрдп рдХреА рдЬрд╛рдВрдЪ рдХреАред рдХрдИ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рдЪрд╛рд░реЛрдВ, рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╡рд┐рдзрд┐, рдЖрджрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рднреА рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ: OAuth 2.0 рдПрдХ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ ред

рдУрдкрдирд┐рдб рдХрдиреЗрдХреНрдЯ


OAuth 2.0 рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рд╕рдордЭрд╛ред рдЕрдм рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рд╣рдореЗрдВ OpenID рдХрдиреЗрдХреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рдЬреЛ OAuth 2.0 рдХреЗ рд▓рд┐рдП рдПрдХ рдРрдб-рдСрди рд╣реИ:

  • C OAuth 2.0 .. access token, . access token MySite. OpenID Connect тАФ (identity). .
  • OpenID Connect тАЬservice discoveryтАЭ. SSO (Single Sign-On), .

рдЖрдЗрдП рддрдХрдиреАрдХреА рдкрдХреНрд╖ рд╕реЗ рдорд╛рдирдХ рдХреЛ рджреЗрдЦреЗрдВред

рдУрдкреЗрдирдЖрдИрдбреА рдХрдиреЗрдХреНрдЯ (рдУрдЖрдИрдбреАрд╕реА) рдУрдкреЗрдирдЖрдИрдбреА рдлрд╛рдЙрдВрдбреЗрд╢рди рдХрдВрд╕реЛрд░реНрдЯрд┐рдпрдо рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдПрдХ рдУрдкрди рдУрдкрдирдЖрдИрдбреА рдорд╛рдирдХ рд╣реИ ред OIDC рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде OAuth 2.0 рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ:

  • рдСрдерд░рд╛рдЗрдЬреЗрд╢рди рд╕рд░реНрд╡рд░, рдЯреЛрдХрди рдФрд░ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ "рдкрд╣рдЪрд╛рди рдЯреЛрдХрди" (рдЖрдИрдбреА рдЯреЛрдХрди) рджреЗрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╣реА JWT рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдЖрдИрдбреА рдЯреЛрдХрди рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдХрд╛рд▓реА рдЬрд╛ рд╕рдХрддреА рд╣реИ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо, рд▓реЙрдЧрд┐рди рд╕рдордп, рдЖрдИрдбреА рдЯреЛрдХрди рд╕рдорд╛рдкреНрддрд┐ рддрд┐рдерд┐ред рдЯреЛрдХрди рдЖрдИрдбреА рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
  • рдУрдЖрдИрдбреАрд╕реА рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдЙрд╕рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

OpenID рдХрдиреЗрдХреНрдЯ рдореЗрдВ рдЗрдВрдЯрд░рдПрдХреНрд╢рди рдЖрд░реЗрдЦ OAuth рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИред рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░:

  • рдХреЛрдб рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛, рд╕реНрдХреЛрдк = рдУрдкрдирд┐рдб рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреНрд▓рд╛рдЗрдВрдЯ, рдЯреЛрдХрди рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдФрд░ рддрд╛рдЬрд╝рд╛ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЯреЛрдХрди рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

OpenID рдХрдиреЗрдХреНрдЯ: рд▓реИрдм (Google)


рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ Google рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╣рдореЗрдВ рдХреНрдпрд╛ рдкреНрд░рд╕рдиреНрди рдХрд░реЗрдЧрд╛ред Google рд╕реЗ OpenID рдХрдиреЗрдХреНрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддреГрдд рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ рдФрд░ Google API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реИрдВрдбрдмреЙрдХреНрд╕: Google OAuth 2.0 рдкреНрд▓реЗрдЧреНрд░рд╛рдЙрдВрдб ред

рдпрд╣рд╛рдВ, OAuth 2.0 рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЪрд░рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗред рдЗрд╕реА рддрд░рд╣, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрд╡реЗрджрди рдкрдВрдЬреАрдХреГрдд рд╣реИ, рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реАрдХреНрд░реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЪрд░рдг 1 рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЙрд▓ рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдЪрд░рдг 2 REST рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдХреЙрд▓ рд╣реИ:

https://accounts.google.com/o/oauth2/v2/auth?
response_type=code&
client_id=140797064495-b8b79j42m97nkkrlndfstikv8.apps.googleusercontent.com&
scope=openid%20email&
redirect_uri=http%3A//c18529.shared.hc.ru/wp-login.php&
state=765439764

Google рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕реБрд░рдХреНрд╖рд╛ рдкрд░ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ:

  • рдкрддрд╛ Google рдкрд░ рд▓реЙрдЧрд┐рди рдмрд┐рдВрджреБ рд╣реИ
  • response_type = code - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ
  • client_id - рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА рдкрдВрдЬреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛
  • рд╕реНрдХреЛрдк = рдУрдкрд┐рдб рдИрдореЗрд▓ - рд╣рдо рдХрд┐рд╕ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
  • redirect_uri - redirect_uri рдЖрд╡реЗрджрди рдкрдВрдЬреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
  • рд░рд╛рдЬреНрдп - рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╕рдВрдЦреНрдпрд╛, рдЬреЛ рдШреБрд╕рдкреИрдард┐рдпрд╛ рд╣рд╕реНрддрдХреНрд╖реЗрдк рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдПрдПрд╕ рдХреЗ рдмреАрдЪ рдкреНрд░реЗрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред

рдЪрд░рдг 3: рдХреЛрдИ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдлрд╝реЙрд░реНрдо рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Google рдореЗрдВ рд▓реЙрдЧ рдЗрди рдерд╛ред

рдЪрд░рдг 4: Google рдореБрдЦрдкреГрд╖реНрда рдкрд░ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╣рдо рдХреЛрдб рджреЗрдЦрддреЗ рд╣реИрдВ:

http://MySite?state=123&code=4/xAFkcMzhyJhUErRJYwIyntSYN-WeJjfZHLiwWL4IaT-WkHzMU18xABlPmev-M_87wVbqTkQ1y93w6GB5&scope=email+openid+https://www.googleapis.com/auth/userinfo.email&authuser=0&prompt=none

рдЬреИрд╕реЗ рдХрд┐ GitHub рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рдкрддреЗ рдкрд░ рдХреЛрдИ рднреА рдХрд╛рд░реНрдпрд╢реАрд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд▓реЗ рдЪрд░рдг 5 рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рднреА рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ Google рдХреЛ POST рдЕрдиреБрд░реЛрдз рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, GET рдХреА рдирд╣реАрдВ:

curl -d "code=4/xAFkcMzhyJhUErRJYwIyntSYN-WeJjfZHLiwWL4IaT-WkHzMU18xABlPmev-M_87wVbqTkQ1y93w6GB5&client_id=140797064495-b8b79j42m97nkkrlndfstikv8.apps.googleusercontent.com&
client_secret=HMVctrTicW6RC1Q8T&
redirect_uri=http%3A//c18529.shared.hc.ru/wp-login.php&
grant_type=authorization_code" 
-H "Content-Type: application/x-www-form-urlencoded" -X POST https://oauth2.googleapis.com/token

  • рдкрддрд╛ Google рдкрд░ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдмрд┐рдВрджреБ рд╣реИ
  • рдХреЛрдб рдХреЗрд╡рд▓ рднреЗрдЬрд╛ рдЧрдпрд╛ рдХреЛрдб рд╣реИ
  • client_id рдкрдВрдЬреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдЬрд╛рд░реА рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА рд╣реИ
  • client_secret рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реАрдХреНрд░реЗрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
  • рдЕрдиреБрджрд╛рди_рдкреНрд░рдХрд╛рд░ = рдкреНрд░рд╛рдзрд┐рдХрд░рдг_рдХреЛрдб - рдорд╛рдирдХ рд╕реЗ рдПрдХрдорд╛рддреНрд░ рдорд╛рдиреНрдп рдореВрд▓реНрдп

рдЪрд░рдг 6: рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ access_token рдФрд░ id_token рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛:

{
  "access_token": "ya29.Il_AB0KeKnjBJx0dhjm2nCLt1B-Mq0aQBW5T302JnlZfsxW1AXqLFfDJZRMi2R2WKG4OX4msKLjx4E4CSl4G_4ajAy3aqrf4pM0ic0jJr092pA67H9aktJktCbx",
  "expires_in": 3327,
  "scope": "openid https://www.googleapis.com/auth/userinfo.email",
  "token_type": "Bearer",
  "id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjE3ZDU1ZmY0ZTEwOTkxZDZiMGVmZDM5MmI5MWEzM2U1
тАжтАжтАжтАжтАжтАжтАжтАжтАжтАжтАжтАж_тАжтАжтАжтАжтАжтАжтАжтАжтАжтАжтАжтАжтАжтАжтАжтАжтАжтАжтАжтАж.._4mUTiMNSAHljap1hLD2hAzgOZWuQ"
}

рдЕрдм рдЗрд╕ рджреМрд▓рдд рдХрд╛ рдХреНрдпрд╛ рдХрд░реЗрдВ?

рдЪрд░рдг 7: access_token рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ: рд╣рдо рдЗрд╕реЗ рдПрдХ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП GMail:

curl -H "Authorization: Bearer ya29.a0Adw1xeWvFoxHKNICHnV6vFFj5TZdPQVlYD98h8wjW95ZEbHVui_pk7HGRoq3Q7MlVLV23xkVM0yyjSP8ClSlvfUy3b_IqvKQW5Lvwj38QzJhee-aH1grerB4pRpMzn_FGueigG_RGI56pKPgFBTr49cpynQy" https://www.googleapis.com/gmail/v1/users/alexey.p.sushkov@gmail.com/profile

рдЪрд░рдг 8: рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдореЗрдВ JSON рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рддреА рд╣реИ:

{
 "emailAddress": "alexey.p.sushkov@gmail.com",
 "messagesTotal": 372543,
...
}

рдЕрдм рдЖрдЗрдП рдЗрд╕ рдХрдерди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ id_token рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рддреНрд░ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ Google API рдХреЛ
oauth2.googleapis.com/tokeninfo рдкрд░ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд id_token рдХреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:

https://oauth2.googleapis.com/tokeninfo?id_token=eyJhbGciOiJSUzI1NiIsImtpZCI6IjE3ZDU1ZmY0ZTEwOTkxZDZiMGVmZDM5MmI5MWEzM2U1NGMwZTIxOGIiLCJ0eXAiOi
тАжтАжтАжтАжтАжтАжтАжтАжтАж_тАжтАжтАжтАжтАжтАжтАжтАжтАжтАжтАж...
SVQ5GQni3irfOzOXYEiqijp6TjGa_a-3jKcEsU5TbasZmAIejsdVcNy2_4mUTiMNSAHljap1hLD2hAzgOZWuQ

рд╕рдордЭреЗ JSON:
{
  "iss": "https://accounts.google.com",
  "email": "alexey.p.sushkov@gmail.com",
  "email_verified": "true",
  "iat": "1583257010",
  "exp": "1583260610",
  "typ": "JWT"
...
}

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ id_token рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓реЙрдЧрд┐рди, рдкреНрд░рд╛рдкреНрддрд┐ рдХреЗ рд╕рдордп рдФрд░ рдЯреЛрдХрди рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИред рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ Google рд╕реЗ OpenID рдХрдиреЗрдХреНрдЯ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Webauthn


рд╡реЗрдм рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди API (рдЬрд┐рд╕реЗ WebAuthn рдХреЗ рдирд╛рдо рд╕реЗ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ):

  • рдорд╛рдирдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдФрд░ рдмрд╛рд╣рд░реА рд╕реБрд░рдХреНрд╖рд╛ рдХреБрдВрдЬреА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, USB рдХреБрдВрдЬреА) рдпрд╛ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдФрд░ рдмрд╛рдж рдореЗрдВ, рдмрд╛рдпреЛрдореЗрдЯреНрд░рд┐рдХ рдбреЗрдЯрд╛: рдлреЗрд╕, рд░реЗрдЯрд┐рдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдЦреБрдж рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
  • тАФ / ┬лPublic key cryptography┬╗. Public key cryptography тАФ , . Private key ( ) , public key ( ) .
  • W3C (World Wide Web Consortium) FIDO, Google, Mozilla, Microsoft, Yubico. W3C HTTP, HTML, XML . WebAuthn. WebAuthn : Chrome, Firefox, Edge, Safari.


OAuth 2.0 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, WebAuthn рдореЗрдВ рдирд┐рдореНрди рднреВрдорд┐рдХрд╛рдПрдБ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИрдВ:

рдкреНрд░рдорд╛рдгрдХ : рдПрдХ рдмрд╛рд╣рд░реА рд╕реБрд░рдХреНрд╖рд╛ рдХреБрдВрдЬреА (рднреМрддрд┐рдХ рдореАрдбрд┐рдпрд╛ рдпрд╛ рдлрд╝рд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рд╕реНрдХреИрдирд░) рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рддреА рд╣реИ, рдЬреИрд╕реЗ рдмреНрд▓реВрдЯреВрде / рдПрдирдПрдлрд╕реА / рдпреВрдПрд╕рдмреАред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ:

  • рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ / рдирд┐рдЬреА рдХреБрдВрдЬреА рдЬреЛрдбрд╝реЗ) рдХреА рдкреАрдврд╝реАред
  • рд▓реЗрдЦрдХ рдЕрдкрдиреА рдореЗрдореЛрд░реА рдореЗрдВ рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ
  • рдмрд╛рд╣рд░реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рджреЗрддрд╛ рд╣реИ
  • рдПрдХ рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдмрд╛рд╣рд░реА рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ

рдкреНрд░рдорд╛рдгреАрдХрд░рдгрдХрд░реНрддрд╛ CTAP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ (рдХреНрд▓рд╛рдЗрдВрдЯ рдЯреВ рдСрдереЗрдВрдЯрд┐рдХреЗрдЯрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓) рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред

Relying Party : OAuth 2.0 рдореЗрдВ "рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рд░реНрд╡рд░" рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИред рдХреЗрд╡рд▓ OAuth 2.0 рдореЗрдВ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо / рдкрд╛рд╕рд╡рд░реНрдб рдерд╛, рдФрд░ рд╡реЗрдирд╣рдЯрди рдореЗрдВ рдпрд╣ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдерд╛ред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ : рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ, OAuth 2.0 рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдПрдХ рддрд░рдл, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ GUI рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдУрд░, рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЗ рд╕рд╛рде рд╣реИ ред

рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рд╡рд╛рд╣


рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, OAuth 2.0 рдХреА рддрд░рд╣, рдЖрдкрдХреЛ рддреИрдпрд╛рд░реА рдХреЗ рдЪрд░рдгреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ OAuth 2.0 рдореЗрдВ рд╣рдордиреЗ рдЖрд╡реЗрджрди рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ WebAuth 2.0 рдореЗрдВ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВред рд╡реЗрдм рдкреНрд░рдорд╛рдгреАрдХрд░рдг API рджреЛ рдХреЙрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ:

  • navigator.credentials.create - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП
  • navigator.credentials.get - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ

рддрджрдиреБрд╕рд╛рд░, рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ navigator.credentials.create рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рдЬреА рдХреБрдВрдЬреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛, рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЛ Relying Party рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЫрд╡рд┐

рдЙрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧреА:

рдЫрд╡рд┐

  1. тАЬWebAuthnтАЭ. , , WebAuthn, тАЬ тАЭ тАЬ тАЭ. Relying Party Challenge. Challenge тАФ , Code OAuth 2.0.
  2. Relying Party Challenge. , REST API.
  3. Authenticator- CTAP (Client to Authenticator Protocols). navigator.credentials.get c :

    • Challenge
  4. Authenticator , , .
  5. , Authenticator .
  6. рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ Relying Party рдХреЛ рднреЗрдЬрддрд╛ рд╣реИред
  7. Relying Party рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЪреИрд▓реЗрдВрдЬ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рддрд╛ рд╣реИред

рдЙрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╣рдо рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:

WebAuthn: рд▓реИрдм (Google)


WebAuthn рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ http рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд┐рддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЖрдкрдХреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдгрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдкреАрдЖрдИ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ Google рдЦреБрд╢ рд╣реИ, рдЪрд░рдг-рджрд░-рдЪрд░рдг рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ WebAuthn ред

рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдПрдХ рдЬреЗрдПрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ ред

рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рд╕реЗрдВрд╕рд░ рд╡рд╛рд▓реЗ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдкрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд╛рд░реНрдп рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдкрд╣рд▓реА рддреИрдпрд╛рд░реА - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ:

рдЫрд╡рд┐

рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо / рдкрд╛рд╕рд╡рд░реНрдб рдмрдирд╛рдПрдВ рдФрд░ рдлрд┐рд░ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ:

рдЫрд╡рд┐

рдЙрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЧреНрд░рд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рд╕реЗ рдХреМрди рд╕реА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИ:

рдЫрд╡рд┐

рдЕрдм рдЖрдк рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЪрд░рдг 1 рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╣рдо рд╕рд╛рдЗрдЯ рдкрд░ рд╣реИрдВред рдЪрд░рдг 2 рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, "рдХреЛрд╢рд┐рд╢ рдХрд░реЛ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЪрд░рдг 3 рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдЧрд╛ рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдгрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░реЗрдЧрд╛, рдЬреЛ рдЪрд░рдг 4 рдореЗрдВ рдЖрдкрдХреЛ рдЕрдкрдиреА рдЙрдВрдЧрд▓реА рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдЧрд╛:

рдЫрд╡рд┐

рдФрд░ рдпрджрд┐ рдкрдВрдЬреАрдХреГрдд рдЙрдВрдЧрд▓реА рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИ, рддреЛ рдЪрд░рдг 5 рдФрд░ 6 рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд░рд┐рдд рд╣реЛрдВрдЧреЗ рдФрд░ рдЪрд░рдг 7 рдореЗрдВ рдЖрд╡реЗрджрди рдлрд┐рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдПрдЧрд╛:

рдЫрд╡рд┐

рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рддреАрди рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдЖрд╢рд╛рдЬрдирдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдЬрд╛рдВрдЪ рдХреА: OAuth 2.0, OpenID рдХрдиреЗрдХреНрдЯ, рд╡реЗрдмрдСрдиред рд╣рдордиреЗ рдЙрдирдХреА рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рд╕рдордЭрд╛:

  • OAuth 2.0 - рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдФрд░ рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреАред
  • OpenID Connect тАФ . OpenID Connect SSO .
  • WebAuthn тАФ .


  • , , .
  • , , .
  • рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдлреЗрд╕рдмреБрдХ рдпрд╛ рдЧреВрдЧрд▓ рдЬреИрд╕реЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рд╡реЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд┐рдпреБрдХреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕реБрд░рдХреНрд╖рд╛ рдХреА рд╕рднреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рдореИрдВ рднрд╡рд┐рд╖реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрд╢рд╛рд╡рд╛рджреА рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ WebAuthn рдкреНрд░реЛрдЯреЛрдХреЙрд▓ - рд╣рдорд╛рд░реЗ рд╕рдордп рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдирд░рдХ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХрд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореМрдХрд╛!

рдпрд╣ рдХреЗрд╡рд▓ рд╢реБрд░реБрдЖрдд рд╣реИ!

рдкрд░рд┐рд╢рд┐рд╖реНрдЯ: рдЕрдиреНрдп рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░реЛрдЯреЛрдХреЙрд▓


рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ рддрдХрдиреАрдХреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реВрдВрдЧрд╛:

SAML 2.0 (рд╕реБрд░рдХреНрд╖рд╛ рдЕрднрд┐рдХрдерди рдорд╛рд░реНрдХрдЕрдк рд▓реИрдВрдЧреНрд╡реЗрдЬ)


2005 рдХреЗ рдкрд░рд┐рдкрдХреНрд╡ рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рд▓реЗрдХрд┐рди SSO рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реАрдорд┐рдд рд╕реЗрдЯ рд╣реИред XML- рдЖрдзрд╛рд░рд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рд▓реЗрдЦ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: "рдХреМрди SAML 2.0 рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ"

рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдореИрдиреЗрдЬрдореЗрдВрдЯ рдПрдкреАрдЖрдИ


рдпрд╣ рд╡рд┐рдХрд╛рд╕ рд╡реЗрдм рд╕рдВрдЧрдарди - рдбрдмреНрд▓реНрдпреВ 3 рд╕реА рдХреЗ рд╕рдорд╛рди рд╕рдВрдЧрдарди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдкреНрд░рдмрдВрдзрди рдорд╛рдирдХ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

  • рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рд╛рдЗрдЯреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдЯреЛрд░ рд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
  • рдХреБрдЫ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЦрд╛рддреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред
  • рдЖрдкрдХреЛ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рджрд░реНрдЬ рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдореИрдиреЗрдЬрдореЗрдВрдЯ рдПрдкреАрдЖрдИ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрджрд╛рд╣рд░рдг Google рдХрд╛ рдкрд╛рд╕рд╡рд░реНрдб рдореИрдиреЗрдЬрд░ рд╣реИ : words.google.com

рдУрдкрди рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди (OATH) рдХреЗ рд▓рд┐рдП рдкрд╣рд▓


рд╢рдкрде рд╕рдВрд╕рд╛рдзрди

OAuth 2.0-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА



All Articles