Internet-Draft | HTTP Requester Impairment Status Code | December 2023 |
Roda | Expires 14 June 2024 | [Page] |
This document specifies a Hypertext Transfer Protocol (HTTP) status code for use when an operation or resource is denied due to requester impairment.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 14 June 2024.¶
Copyright (c) 2023 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
This document specifies a Hypertext Transfer Protocol (HTTP) status code for use when a request is denied because the requester is impaired.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
The status code 420 indicates that the server is denying the request as a consequence of evidence of requester impairment.¶
The server in question might not be an origin server. An intermediate proxy closer to the requester may be in a better position to assess potential requester impairment. Such a proxy may refuse to forward the request and respond with this error code.¶
There is no requirement that the requester be human. Certain AI systems can exhibit behaviors such as giving hallucinated, incorrect, and differing answers for a given input.¶
420 responses MUST include a Link header [RFC8288] with a relation type of "status". This link is used by the remediated requester to obtain information about the server state and to signal to the server that the requester is remediated. Requesters SHOULD use this link when remediated before making subsequent requests unless a bearer token is used as described under Section 4 and the server does not require usage of the link.¶
A 420 response is non-cacheable by default, i.e., unless otherwise indicated by the method definition or explicit cache controls; see [RFC9111].¶
IANA is asked to update the HTTP Status Codes Registry with the following entry:¶
The usage of the link resource provided by the Link header to assert requester remediation assumes a requester or proxy that is trustworthy enough to halt requests and only access the link resource after requester remediation. If greater security is required, perhaps to enable an external system to remediate and validate the requester, a server MAY require an OAuth authorization [RFC7523] bearer token [RFC6750] to signal remediation of the requester.¶
If a valid bearer token is required and missing, further requests SHOULD be rejected with a 403 Forbidden response code with the insufficient_scope error code and scope attribute naming the authorization token required as described in [RFC6750] section 3.1. Once this authorization bearer token is validated the server MAY allow requests without using the Link provided in the 420 response, but MUST NOT respond to usage of the link as an error.¶