Oauthlib: рддреНрд░реБрдЯрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЕрдорд╛рдиреНрдп HTTP рд╕реНрдерд┐рддрд┐рдпрд╛рдБ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рд╕рд┐рддре░ 2014  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: oauthlib/oauthlib

RFC 6749 рдЦрдВрдб 5.2 (http://tools.ietf.org/html/rfc6749#section-5.2) рддреНрд░реБрдЯрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдХреЛ HTTP 400 (рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз) рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди oauthlib InvalidClientError , InvalidGrantError , UnauthorizedClientError рдФрд░ рдЕрдиреНрдп рд╕рдВрдмрдВрдзрд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдЬреИрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП HTTP 401 (рдЕрдирдзрд┐рдХреГрдд) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://github.com/idan/oauthlib/blob/master/oauthlib/oauth2/rfc6749/errors.py#L181

Contributor Friendly

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЕрддреАрдд рдореЗрдВ рд╣реБрдИ рдЪрд░реНрдЪрд╛ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

  • OAuth2.0 RFC6749 рд╡рд░реНрдХрд┐рдВрдЧ рдЧреНрд░реБрдк рдиреЗ 401 рдХреЗ рдмрдЬрд╛рдп рддреНрд░реБрдЯрд┐ HTTP рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП 400 рдЕрдкрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WWW-Authenticate рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рд╕рднреА рддреНрд░реБрдЯрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
  • @asteinlein рдиреЗ oauthlib рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ 400 рд╕реЗ 401 рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП https://github.com/oauthlib/oauthlib/pull/247 рдкрд░ рдПрдХ рдкреАрдЖрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ _some рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рд╛рдзрд┐рдХрд░рдг_ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд API рдХреЙрд▓ рдХреЗ рд▓рд┐рдП 401 рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред рдЬрдмрдХрд┐ рдпрд╣ рд╕рдЪ рд╣реЛрдирд╛ рдерд╛, рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреМрди рд╕реЗ рдЧреНрд░рд╛рд╣рдХ рдЯреВрдЯ рдЧрдП рдереЗред
  • рддреГрддреАрдп рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдХрдИ рдмрдЧ рдкреЙрдкрдЕрдк https://github.com/oauthjs/angular-oauth2/issues/31 https://github.com/oauthjs/angular-oauth2/issues/32#issuecomment -88888755 https://github .com/oauthjs/angular-oauth2/issues/36 ред рдореБрджреНрджреЗ рдЕрдм рд╕рдм рдмрдВрдж рд╣реИрдВред
  • рд╡рд░реНрддрдорд╛рди рдереНрд░реЗрдб рдФрд░ RFC6749#5.2 рдХреА рд╕рдордЧреНрд░ рд╕рд╣рдорддрд┐ рдпрд╣ рд╣реИ рдХрд┐ oauthlib рдореЗрдВ рд╕рднреА 401 400 рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдорд╛рдорд▓реЗ рд╣реИрдВ 401 :
  1. invalid_client , рдЬрд╣рд╛рдВ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП 401 рдпрджрд┐ HTTP рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдпрд╣ 401 рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  2. invalid_token , рдЬрд╣рд╛рдВ рдЗрд╕реЗ 401 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ред

рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрджрд┐ 401 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ WWW-Authenticate рдЕрд╡рд╢реНрдп рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ( RFC2616 )ред

рдЕрдиреНрдп OAuth2.0 рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рд╕рдмрд╕реЗ рдЖрдо OAuth2.0 рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рддреНрд╡рд░рд┐рдд рдЕрд╡рд▓реЛрдХрди рд╕рдордЧреНрд░ рдЖрдо рд╕рд╣рдорддрд┐ рдХреЗ рд╕рдорд╛рди рд╣реИ:

  • Google 400 so-question / so-question рд▓реМрдЯрд╛рддрд╛ рд╣реИред
  • рд╕реЗрд▓реНрд╕рдлреЛрд░реНрд╕ 400 рд╕реЗрд▓реНрд╕рдлреЛрд░реНрд╕-рдлреЛрд░рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИред
  • рдЕрдЬрд╝реВрд░ 401 рдХреЗ рд╕рд╛рде WWW-Authenticate azur-docs рд▓реМрдЯрд╛рддрд╛ рд╣реИред
  • AWS 400 aws-cognito-docs рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЬрдм HTTP рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ RFC рдХреЗ " MUST " рдХреЛ 401 рддреЛрдбрд╝ рджрд┐рдпрд╛ред

рднреНрд░рдо

рд╣рдореЗрдВ рдЖрд░рдПрдлрд╕реА рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ 2.xx рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди 3.xx рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред

рдХреГрдкрдпрд╛, рдмреЗрдЭрд┐рдЭрдХ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВред

рд╕рднреА 11 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХрд▓реНрдкрдирд╛ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ рдХрд┐ 401 рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдорд╛рдиреНрдп рдХреНрд▓рд╛рдЗрдВрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╢реАрд░реНрд╖рд▓реЗрдЦ рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рд╣рд╛рд▓рд╛рдВрдХрд┐ oauthlib рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ 'WWW-Authenticate' рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдХрд▓реНрдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП 401 рд░рдЦрдирд╛ рдареАрдХ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрдкрд╡рд╛рдж рдореЗрдВ рдПрдХ рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╕реБрдЭрд╛рд╡ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред

рджреВрд╕рд░реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд▓реНрдкрдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд╣рддреА рд╣реИ рдХрд┐ 401 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдореЗрдВ рд╢рд╛рдпрдж 400 рдореЗрдВ рдмрджрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрдорд╛рдиреНрдп рдЕрдиреБрджрд╛рди рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдирдзрд┐рдХреГрдд рдХреНрд▓рд╛рдЗрдВрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рджреЛрдиреЛрдВ рдореЗрдВ 401 рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

@asteinlein , @lepture , @masci рд╡рд┐рдЪрд╛рд░?

@ ib-lundgren рд╣рд╛рдп - рдмрд╕ рдЗрд╕реА рдореБрджреНрджреЗ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИ рдФрд░ рдЗрд╕рдореЗрдВ рдЭрдВрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдХрд▓реНрдкрдирд╛ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдЕрдиреНрдп рдЙрддреНрддрд░реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рд╕реЗ, IMO 400 рд╕рд╣реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛:

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

400 рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рдХреЛрдИ MUST рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ MAY рднреА рдирд╣реАрдВ рд╣реИред

рджреВрд╕рд░рд╛, рдФрд░ рдЬрд┐рд╕ рдХрд╛рд░рдг рд╕реЗ рдореИрдВрдиреЗ рдареЛрдХрд░ рдЦрд╛рдИ рд╡рд╣ рдореЗрд░реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕реВрд░реНрдп рдЬреЗрдбреАрдХреЗ рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдмрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдерд╛ (рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ: http://stackoverflow.com/a/7524681/1137254 )

рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдореЗрд░реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ HTTP рд╕реНрдЯреИрдХ 401 рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЬрд▓реНрджреА рдмрдВрдж рдХрд░ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдКрдкрд░ OAuth рд╕реНрдЯреИрдХ (google-http-oauth-client) рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ 401 рдХреЗ рдЖрд╕рдкрд╛рд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдФрд░ рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдУрдкрдирдЬреЗрдбреАрдХреЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ (рдЕрджреНрдпрддрди: рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 'рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ' рдореЛрдб рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИ)ред рдЖрдИрдПрдордУ рдУрдкрдирдЬреЗрдбреАрдХреЗ рднреА рдЧрд▓рдд рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ/рдЯреЛрдХрди рдПрдВрдбрдкреЙрдЗрдВрдЯ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рджреМрд░рд╛рди "рдЕрдорд╛рдиреНрдп_рдХреНрд▓рд╛рдЗрдВрдЯ" 401 рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдпрд╣ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреАред

400 рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╡реЛрдЯ рдЬреЛрдбрд╝рдирд╛ рдпрд╣рд╛рдВ рд╕рд╣реА рддреНрд░реБрдЯрд┐ рдХреЛрдб рд╣реИред рд╣рдо рдореЛрдмрд╛рдЗрд▓ рдРрдк рд╕реЗ oauth2 рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП django-oauth2-provider рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рдереЗ, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ 400 рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ред рдирдП Django рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП django-oauth-toolkit (рдЬреЛ oauthlib рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ) рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ рдореЛрдмрд╛рдЗрд▓ рдРрдкреНрд╕ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 400 рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди рдЕрдиреБрд░реЛрдз рджреГрд╢реНрдп рдХреЛ рд╣реИрдХ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рдпрд╣рд╛рдБ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рдмрддрд╛рддреЗ рд╣реБрдП рдХрд┐ 400 рдПрдХ рдЯреЛрдХрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╕рдордп рдЕрдорд╛рдиреНрдп рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫрд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдФрд░ рдХреНрдпреЛрдВ: https://www.ietf.org/mail-archive/web/oauth/current/msg02127 .html

рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ 401 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдУрдерд▓рд┐рдм рд╕реЗ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред

400 . рдХреЗ рд▓рд┐рдП +1

400 . рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░реЗрдВ

рдореИрдВ рдЗрд╕ рдкреБрд░рд╛рдиреЗ рдзрд╛рдЧреЗ рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдКрдкрд░ рд╕реБрдЭрд╛рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреАрдЖрд░ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЗрд╕ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЕрддреАрдд рдореЗрдВ рд╣реБрдИ рдЪрд░реНрдЪрд╛ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

  • OAuth2.0 RFC6749 рд╡рд░реНрдХрд┐рдВрдЧ рдЧреНрд░реБрдк рдиреЗ 401 рдХреЗ рдмрдЬрд╛рдп рддреНрд░реБрдЯрд┐ HTTP рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП 400 рдЕрдкрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WWW-Authenticate рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рд╕рднреА рддреНрд░реБрдЯрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
  • @asteinlein рдиреЗ oauthlib рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ 400 рд╕реЗ 401 рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП https://github.com/oauthlib/oauthlib/pull/247 рдкрд░ рдПрдХ рдкреАрдЖрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ _some рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рд╛рдзрд┐рдХрд░рдг_ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд API рдХреЙрд▓ рдХреЗ рд▓рд┐рдП 401 рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред рдЬрдмрдХрд┐ рдпрд╣ рд╕рдЪ рд╣реЛрдирд╛ рдерд╛, рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреМрди рд╕реЗ рдЧреНрд░рд╛рд╣рдХ рдЯреВрдЯ рдЧрдП рдереЗред
  • рддреГрддреАрдп рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдХрдИ рдмрдЧ рдкреЙрдкрдЕрдк https://github.com/oauthjs/angular-oauth2/issues/31 https://github.com/oauthjs/angular-oauth2/issues/32#issuecomment -88888755 https://github .com/oauthjs/angular-oauth2/issues/36 ред рдореБрджреНрджреЗ рдЕрдм рд╕рдм рдмрдВрдж рд╣реИрдВред
  • рд╡рд░реНрддрдорд╛рди рдереНрд░реЗрдб рдФрд░ RFC6749#5.2 рдХреА рд╕рдордЧреНрд░ рд╕рд╣рдорддрд┐ рдпрд╣ рд╣реИ рдХрд┐ oauthlib рдореЗрдВ рд╕рднреА 401 400 рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдорд╛рдорд▓реЗ рд╣реИрдВ 401 :
  1. invalid_client , рдЬрд╣рд╛рдВ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП 401 рдпрджрд┐ HTTP рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдпрд╣ 401 рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  2. invalid_token , рдЬрд╣рд╛рдВ рдЗрд╕реЗ 401 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ред

рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрджрд┐ 401 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ WWW-Authenticate рдЕрд╡рд╢реНрдп рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ( RFC2616 )ред

рдЕрдиреНрдп OAuth2.0 рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рд╕рдмрд╕реЗ рдЖрдо OAuth2.0 рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рддреНрд╡рд░рд┐рдд рдЕрд╡рд▓реЛрдХрди рд╕рдордЧреНрд░ рдЖрдо рд╕рд╣рдорддрд┐ рдХреЗ рд╕рдорд╛рди рд╣реИ:

  • Google 400 so-question / so-question рд▓реМрдЯрд╛рддрд╛ рд╣реИред
  • рд╕реЗрд▓реНрд╕рдлреЛрд░реНрд╕ 400 рд╕реЗрд▓реНрд╕рдлреЛрд░реНрд╕-рдлреЛрд░рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИред
  • рдЕрдЬрд╝реВрд░ 401 рдХреЗ рд╕рд╛рде WWW-Authenticate azur-docs рд▓реМрдЯрд╛рддрд╛ рд╣реИред
  • AWS 400 aws-cognito-docs рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЬрдм HTTP рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ RFC рдХреЗ " MUST " рдХреЛ 401 рддреЛрдбрд╝ рджрд┐рдпрд╛ред

рднреНрд░рдо

рд╣рдореЗрдВ рдЖрд░рдПрдлрд╕реА рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ 2.xx рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди 3.xx рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред

рдХреГрдкрдпрд╛, рдмреЗрдЭрд┐рдЭрдХ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВред

рдореБрдЭреЗ рдЙрд╕ рдХрд╛рд░рдг/рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдкреАрдЖрд░ #247 рдзрдХреНрдХрд╛ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ рдФрд░ рд╕рдордЭрддрд╛ рд╣реВрдВред @JonathanHuot рдХреЗ рд╢рд╛рдирджрд╛рд░ рд╢реЛрдз рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдФрд░ 3.x рдореЗрдВ рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд▓рдЧрддрд╛ рд╣реИред

#561 / oauthlib>= 3.0.0 . рдореЗрдВ рдлрд┐рдХреНрд╕реНрдб

рдЗрд╕ RFC рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЬрд┐рд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдКрдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдорд╛рдиреНрдп рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреА рд╕реНрдерд┐рддрд┐ 400 рд╡рд╛рдкрд╕ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдкреИрдХреЗрдЬ рдореЗрдВ рдЕрднреА рднреА 401 рд╣реИ

рд╣рд╛рдп @esfandiaryfard , рдХреНрдпрд╛ рдЖрдк RFC рдХреЗ рд╕рдЯреАрдХ рдкрд╛рда рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕