Какие ошибки следует вернуть стороннему приложению?

Когда пользователь ( "Владелец ресурса" ) явно отклоняет запрос auth, он должен быть передан запрашивающему клиенту (что-то вроде https://oauth2client.com/cb#error=access_denied).

Какие еще ошибки должны быть переданы стороннему приложению? Что можно сказать о (временной) ошибке сервера? Есть ли события, которые не должны быть вызваны по соображениям безопасности?

Спасибо!

Ответ 1

Вы читали RFC?

См. раздел 4.1.2.1. Ошибка ответа для гранта авторизационного кода. В нем указаны коды ошибок, которые вы можете отправить обратно. server_error или temporarily_unavailable - это, вероятно, то, что вы ищете. Рекомендации по безопасности OAUth2 не вызывают причин не отправлять их обратно.

If the request fails due to a missing, invalid, or mismatching
redirection URI, or if the client identifier is missing or invalid,
the authorization server SHOULD inform the resource owner of the
error and MUST NOT automatically redirect the user-agent to the
invalid redirection URI.

If the resource owner denies the access request or if the request
fails for reasons other than a missing or invalid redirection URI,
the authorization server informs the client by adding the following
parameters to the query component of the redirection URI using the
"application/x-www-form-urlencoded" format, per Appendix B:

error
     REQUIRED.  A single ASCII [USASCII] error code from the
     following:

     invalid_request
           The request is missing a required parameter, includes an
           invalid parameter value, includes a parameter more than
           once, or is otherwise malformed.
     unauthorized_client
           The client is not authorized to request an authorization
           code using this method.

     access_denied
           The resource owner or authorization server denied the
           request.

     unsupported_response_type
           The authorization server does not support obtaining an
           authorization code using this method.

     invalid_scope
           The requested scope is invalid, unknown, or malformed.

     server_error
           The authorization server encountered an unexpected
           condition that prevented it from fulfilling the request.
           (This error code is needed because a 500 Internal Server
           Error HTTP status code cannot be returned to the client
           via an HTTP redirect.)

     temporarily_unavailable
           The authorization server is currently unable to handle
           the request due to a temporary overloading or maintenance
           of the server.  (This error code is needed because a 503
           Service Unavailable HTTP status code cannot be returned
           to the client via an HTTP redirect.)

     Values for the "error" parameter MUST NOT include characters
     outside the set %x20-21 / %x23-5B / %x5D-7E.