<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-chen-oauth-agent-revocation-01" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="Authorization revocation">OAuth 2.0 Agent Authorization Explicit Revocation</title>
    <seriesInfo name="Internet-Draft" value="draft-chen-oauth-agent-revocation-01"/>
    <author initials="M." surname="Chen" fullname="Meiling Chen">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <city>BeiJing</city>
          <country>China</country>
        </postal>
        <email>chenmeiling@chinamobile.com</email>
      </address>
    </author>
    <author initials="L." surname="Su" fullname="Li Su">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <city>BeiJing</city>
          <country>China</country>
        </postal>
        <email>suli@chinamobile.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="30"/>
    <area>Security</area>
    <workgroup>OAuth Working Group</workgroup>
    <keyword>OAuth</keyword>
    <keyword>Security</keyword>
    <keyword>Authorization</keyword>
    <keyword>Revocation</keyword>
    <abstract>
      <?line 39?>

<t>The OAuth 2.0 Token Revocation mechanism defined in RFC 7009 enables clients to notify authorization servers that a token is no longer needed. However, that mechanism is limited to single-token operations and does not support batch revocation, cascade propagation, or context-aware semantics at the agent level. With the emergence of autonomous systems and cross-domain agent networks, authorization servers require more granular, traceable revocation semantics.</t>
      <t>This document defines an agent-based explicit revocation extension, introducing new endpoints, request/response formats, and coordination protocols to support batch revocation based on agent IDs, cascade propagation, conditional revocation, and verifiable audit trails.</t>
    </abstract>
  </front>
  <middle>
    <?line 45?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>RFC 7009 defines the standard OAuth 2.0 token revocation flow, which operates at the granularity of individual tokens (access tokens or refresh tokens). This design works well in traditional client-server architectures but reveals significant limitations in emerging scenarios:</t>
      <ul spacing="normal">
        <li>
          <t><strong>Agent Networks:</strong> Multiple agent proxies form delegation chains through authorization topology</t>
        </li>
        <li>
          <t><strong>Autonomous Systems:</strong> Agents can dynamically generate sub-agents and distribute permissions</t>
        </li>
        <li>
          <t><strong>Cross-Domain Collaboration:</strong> Agents migrate across different trust domains
In these scenarios, revoking access for an upstream agent typically requires simultaneously revoking all its delegated sub-agents. RFC 7009 lacks mechanisms to support such cascade revocation.</t>
        </li>
      </ul>
      <t>Existing RFC 7009 exhibits the following core deficiencies:</t>
      <ul spacing="normal">
        <li>
          <t><strong>Single Granularity:</strong> Supports only per-token revocation, cannot batch process by agent ID</t>
        </li>
        <li>
          <t><strong>No Cascade Propagation:</strong> After upstream agent revocation, downstream sub-agent tokens remain valid</t>
        </li>
        <li>
          <t><strong>Insufficient Response Information:</strong> 200 OK status does not provide revocation confirmation, execution results, or failure details</t>
        </li>
        <li>
          <t><strong>No Audit Context:</strong> Cannot convey revocation reasons, operator identity, or other critical audit information</t>
        </li>
        <li>
          <t><strong>No Event Notification:</strong> No standard mechanism to notify relevant parties (e.g., resource servers, downstream agents) of token status changes</t>
        </li>
        <li>
          <t><strong>Missing Conditional Revocation:</strong> Does not support suspension, partial permission revocation, or other fine-grained policies</t>
        </li>
      </ul>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>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 <xref target="RFC8174">RFC2119</xref>.</t>
      <t>Readers are expected to be familiar with the terms and concepts described in the core OAuth 2.0 Framework <xref target="RFC6749"/> and <xref target="RFC7009"/>.</t>
    </section>
    <section anchor="agent-revocation-endpoint">
      <name>Agent Revocation Endpoint</name>
      <section anchor="endpoint-definition">
        <name>Endpoint Definition</name>
        <t>To support agent-based explicit revocation, a new endpoint is defined:</t>
        <artwork><![CDATA[
  POST /agent/revoke
]]></artwork>
        <t>This endpoint accepts a JSON request body containing the revocation target, reason, and propagation strategy.</t>
      </section>
      <section anchor="request-format">
        <name>Request Format</name>
        <t>The request MUST include the following parameters:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Metadata Field</th>
              <th align="left">Type</th>
              <th align="left">Required</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>agent_id</tt></td>
              <td align="left">String</td>
              <td align="left">Yes</td>
              <td align="left">Identifier of the agent to be revoked.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>reason</tt></td>
              <td align="left">Object</td>
              <td align="left">Yes</td>
              <td align="left">Revocation reason, containing code and description.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>cascade_depth</tt></td>
              <td align="left">integer</td>
              <td align="left">Yes</td>
              <td align="left">Cascade depth, -1 for unlimited, 0 for this agent only.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>context</tt></td>
              <td align="left">Object</td>
              <td align="left">Recommended</td>
              <td align="left">Operation context including operator, source_ip, request_id.</td>
            </tr>
          </tbody>
        </table>
        <t>Status Parameters:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Parameter</th>
              <th align="left">Type</th>
              <th align="left">Required</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>revoke_all_tokens</tt></td>
              <td align="left">boolean</td>
              <td align="left">No</td>
              <td align="left">Whether to revoke all tokens for this agent, default true.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>revoke_for_duration</tt></td>
              <td align="left">integer</td>
              <td align="left">No</td>
              <td align="left">Temporary suspension duration in seconds, absent means permanent.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>revoke_scopes</tt></td>
              <td align="left">array</td>
              <td align="left">No</td>
              <td align="left">List of scopes to be removed.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>retain_scopes</tt></td>
              <td align="left">array</td>
              <td align="left">No</td>
              <td align="left">List of scopes to be retained.</td>
            </tr>
          </tbody>
        </table>
        <t>Example Requst:</t>
        <artwork><![CDATA[
POST /agent/revoke HTTP/1.1
Host: authorization-server.example.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiIs...

{
  "agent_id": "urn:agent:root:12345",
  "reason": {
    "code": "SECURITY_INCIDENT",
    "description": "Agent exhibited anomalous behavior pattern"
  },
  "cascade_depth": -1,
  "context": {
    "operator": "urn:user:admin:security",
    "source_ip": "10.0.0.1",
    "request_id": "req-abc-123"
  },
  "revoke_all_tokens": true
}
]]></artwork>
      </section>
      <section anchor="response-format">
        <name>Response Format</name>
        <t>The server MUST return a JSON response containing execution status and detailed statistics.</t>
        <t>Example Successful Response (HTTP 200):</t>
        <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json

{
  "status": "completed",
  "transaction_id": "tx-uuid-001",
  "timestamp": "2026-03-25T10:30:00Z",
  "summary": {
    "direct_agents_revoked": 1,
    "cascade_agents_revoked": 3,
    "tokens_revoked": 15,
    "events_emitted": 15,
    "failures": []
  },
  "affected_agents": [
    {"agent_id": "urn:agent:root:12345", "status": "revoked"},
    {"agent_id": "urn:agent:sub:child_1", "status": "revoked"},
    {"agent_id": "urn:agent:sub:child_2", "status": "revoked"},
    {"agent_id": "urn:agent:sub:child_3", "status": "revoked"}
  ],
  "audit_reference": "urn:audit:log:entry-98765"
}
]]></artwork>
        <t>Example Failure Response (HTTP 400)</t>
        <artwork><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json

{
  "status": "failed",
  "transaction_id": "tx-uuid-002",
  "timestamp": "2026-03-25T10:31:00Z",
  "error": {
    "code": "INVALID_AGENT_ID",
    "description": "The specified agent_id does not exist or has already been revoked."
  },
  "summary": {
    "direct_agents_revoked": 0,
    "cascade_agents_revoked": 0,
    "tokens_revoked": 0,
    "events_emitted": 0,
    "failures": [
      {
        "agent_id": "urn:agent:root:99999",
        "reason": "Agent not found"
      }
    ]
  },
  "audit_reference": "urn:audit:log:entry-98766"
}
]]></artwork>
        <t>Response Status Codes</t>
        <table>
          <thead>
            <tr>
              <th align="left">HTTP Status</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>200 OK</tt></td>
              <td align="left">Revocation completed successfully</td>
            </tr>
            <tr>
              <td align="left">
                <tt>400 Bad Request</tt></td>
              <td align="left">Invalid request parameters (e.g., missing required fields, malformed agent_id)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>401 Unauthorized</tt></td>
              <td align="left">Missing or invalid authentication credentials</td>
            </tr>
            <tr>
              <td align="left">
                <tt>403 Forbidden</tt></td>
              <td align="left">Authenticated client lacks permission to revoke the specified agent</td>
            </tr>
            <tr>
              <td align="left">
                <tt>404 Not Found</tt></td>
              <td align="left">Agent ID not recognized</td>
            </tr>
            <tr>
              <td align="left">
                <tt>409 Conflict</tt></td>
              <td align="left">Revocation conflicts with an existing operation (e.g., partial revocation already in progress)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>429 Too Many Requests</tt></td>
              <td align="left">Rate limit exceeded</td>
            </tr>
            <tr>
              <td align="left">
                <tt>500 Internal Server Error</tt></td>
              <td align="left">Unexpected server error</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The agent revocation endpoint introduces significant capabilities and, consequently, significant security risks if not properly secured. Its misuse can lead to widespread service disruptions. Implementers MUST address the following points.</t>
      <ul spacing="normal">
        <li>
          <t><strong>Strict Authorization:</strong> The ability to revoke an agent's access is a highly privileged operation. Authorization servers MUST enforce strict access control, for example, by requiring a specific OAuth 2.0 scope (e.g., agent.revoke). Policies MUST also ensure a client can only revoke agents it is authorized to manage (e.g., based on ownership or hierarchy), and MUST NOT be able to revoke arbitrary agents. Critical system agents SHOULD have additional protections, such as requiring multi-party approval before revocation.</t>
        </li>
        <li>
          <t><strong>Denial of Service (DoS) Mitigation:</strong> The cascade_depth parameter can be used as an amplification vector for DoS attacks. A single request could trigger a massive, resource-intensive operation. Servers MUST implement rate limiting on this endpoint. It is also RECOMMENDED that servers enforce a configurable maximum cascade_depth and process large-scale revocations asynchronously to prevent server overload.</t>
        </li>
        <li>
          <t><strong>Information Disclosure:</strong> The detailed response, particularly the affected_agents list, could leak the internal structure of an agent hierarchy to an unauthorized party. The server MUST filter the response to ensure it only contains information that the requesting client is permitted to see.</t>
        </li>
        <li>
          <t><strong>Auditing and Non-Repudiation:</strong> All revocation attempts, whether successful or failed, MUST be logged in a secure, tamper-evident audit trail. These logs are critical for forensic analysis and holding operators accountable. The context object in the request is intended to facilitate this.</t>
        </li>
        <li>
          <t><strong>Transport Security:</strong> As with all OAuth 2.0 endpoints, communication between the client and the agent revocation endpoint MUST be protected using Transport Layer Security (TLS) to ensure confidentiality and integrity.</t>
        </li>
      </ul>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>TBD</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This document based on RFC7009</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-informative-references">
      <name>Informative References</name>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
      <reference anchor="RFC7009">
        <front>
          <title>OAuth 2.0 Token Revocation</title>
          <author fullname="T. Lodderstedt" initials="T." role="editor" surname="Lodderstedt"/>
          <author fullname="S. Dronia" initials="S." surname="Dronia"/>
          <author fullname="M. Scurtescu" initials="M." surname="Scurtescu"/>
          <date month="August" year="2013"/>
          <abstract>
            <t>This document proposes an additional endpoint for OAuth authorization servers, which allows clients to notify the authorization server that a previously obtained refresh or access token is no longer needed. This allows the authorization server to clean up security credentials. A revocation request will invalidate the actual token and, if applicable, other tokens based on the same authorization grant.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7009"/>
        <seriesInfo name="DOI" value="10.17487/RFC7009"/>
      </reference>
      <reference anchor="RFC6749">
        <front>
          <title>The OAuth 2.0 Authorization Framework</title>
          <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
          <date month="October" year="2012"/>
          <abstract>
            <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6749"/>
        <seriesInfo name="DOI" value="10.17487/RFC6749"/>
      </reference>
    </references>
    <?line 234?>



  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
