4.1.2.1. 错误响应

如果由于缺失、无效或不匹配的重定向URI而请求失败,或者如果客户端表示缺失或无效,授权服务器应该通知资源所有者该错误且不能向无效的重定向URI自动重定向用户代理。

如果资源所有者拒绝访问请求,或者如果请求因为其他非缺失或无效重定向URI原因而失败,授权服务器通过按附录B使用“application/x-www-form-urlencoded”格式向重定向URI的查询部分添加下列参数通知客户端:

  • error必需的。下列ASCII[USASCII]错误代码之一:

    • invalid_request请求缺少必需的参数、包含无效的参数值、包含一个参数超过一次或其他不良格式。
    • unauthorized_client客户端未被授权使用此方法请求授权码。
    • access_denied资源所有者或授权服务器拒绝该请求。
    • unsupported_response_type授权服务器不支持使用此方法获得授权码。
    • invalid_scope请求的范围无效,未知的或格式不正确。
    • server_error授权服务器遇到意外情况导致其无法执行该请求。(此错误代码是必要的,因为500内部服务器错误HTTP状态代码不能由HTTP重定向返回给客户端)。
    • temporarily_unavailable授权服务器由于暂时超载或服务器维护目前无法处理请求。(此错误代码是必要的,因为503服务不可用HTTP状态代码不可以由HTTP重定向返回给客户端)。

    “error”参数的值不能包含集合%x20-21 /%x23-5B /%x5D-7E以外的字符。

  • error_description可选的。提供额外信息的人类可读的ASCII[USASCII]文本,用于协助客户端开发人员理解所发生的错误。“error_description”参数的值不能包含集合%x20-21 /%x23-5B /%x5D-7E以外的字符。
  • error_uri可选的。指向带有有关错误的信息的人类可读网页的URI,用于提供客户端开发人员关于该错误的额外信息。“error_uri”参数值必须符合URI参考语法,因此不能包含集合%x21/%x23-5B /%x5D-7E以外的字符。
  • state必需的,若“state”参数在客户端授权请求中提交。从客户端接收的精确值。

例如,授权服务器通过发送以下HTTP响应重定向用户代理:

  1. HTTP/1.1 302 Found
  2. Location: https://client.example.com/cb?error=access_denied&state=xyz