<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="info" docName="draft-du-oauth-agent-authorization-center-00"
     ipr="trust200902">
  <front>
    <title abbrev="Agent Authorization Center">Agent Authorization Center for
    User-Side Agent Authentication and Authorization</title>

    <author fullname="Zongpeng Du" initials="Z." surname="Du">
      <organization>China Mobile</organization>

      <address>
        <postal>
          <street>No.32 XuanWuMen West Street</street>

          <city>Beijing</city>

          <code>100053</code>

          <country>China</country>
        </postal>

        <email>duzongpeng@foxmail.com</email>
      </address>
    </author>

    <date month="" year=""/>

    <area>Security Area</area>

    <workgroup>Web Authorization Protocol Working Group</workgroup>

    <keyword>AI Agent, OAuth</keyword>

    <abstract>
      <t>This document proposes an Agent Authorization Center (AAC) for
      user-side intelligent agents, enabling them to access resource parties
      on behalf of users through either autonomous approval or human
      authorization modes. The AAC maintains user-agent associations and
      personalized authorization policies, balancing agent autonomy with user
      control.</t>
    </abstract>

    <note title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119">RFC 2119</xref>.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>With the rapid advancement of large language models (LLMs) and agent
      technologies, intelligent agents are evolving from simple conversational
      tools into digital assistants capable of autonomously executing complex
      tasks. Agents can represent users in completing travel planning, ticket
      booking, information retrieval, online shopping, and other operations,
      increasingly functioning as digital proxies for human users. </t>

      <t>However, the widespread deployment of agents faces a critical
      challenge: when an agent needs to access third-party resource parties
      (such as websites, APIs, or cloud services) on behalf of a user, how can
      identity authentication and authorization be securely and efficiently
      accomplished? </t>

      <t>The traditional OAuth 2.0 <xref target="RFC6749"> </xref> framework
      assumes that authorization requests are initiated by users, who interact
      with the authorization server through a browser to complete
      authorization. However, the agent scenario introduces new
      characteristics: </t>

      <t><list style="symbols">
          <t>Agents may operate over extended periods, making it impractical
          to interrupt users for interactive authorization each time.</t>

          <t>Agents act on behalf of users, requiring a mechanism to express
          that "the user has pre-authorized this agent to act autonomously in
          this context".</t>

          <t>Authorization policies are highly personalized across users,
          necessitating centralized policy management.</t>
        </list></t>

      <t>This document proposes an Agent Authorization Center (AAC)
      architecture that serves as a trust anchor between agents and resource
      parties. The AAC maintains user agent authorization policies and
      supports two authorization modes: Autonomous Approval&#8203; and Human
      Authorization, extending the OAuth 2.0 flow to accommodate agent
      scenarios. This mechanism is primarily designed for user-side agents,
      which deployed on personal user devices, bound to individual users, and
      acting on their behalf.</t>

      <t>This document distinguishes between two agent deployment forms:</t>

      <t><list style="symbols">
          <t>User-side Agent: Deployed on personal user devices (smartphones,
          PCs, smart home devices), tightly bound to individual user
          identities, typically serving a single user. Examples include
          personal assistant agents that help users manage schedules, book
          tickets, and shop online.</t>

          <t>Service-side Agent: Deployed on cloud servers, natively
          supporting high concurrency and serving large numbers of users.
          Examples include customer service agents on e-commerce platforms and
          enterprise workflow automation agents.</t>
        </list></t>

      <t>This document focuses on the user-side agent scenario, where the
      agent acts as a direct proxy for an individual user and requires
      personalized authorization policy management.</t>
    </section>

    <section anchor="AACArchitecture "
             title="Agent Authorization Center Architecture">
      <t>The AAC serves as the trust intermediary among users, agents, and
      resource parties, with the following responsibilities: </t>

      <t><list style="symbols">
          <t>Maintaining user identity information; </t>

          <t>Maintaining associations between users and agent groups, and
          between agent groups and individual agents; </t>

          <t>Maintaining autonomous access policies for agents (or agent
          groups); </t>

          <t>Making authorization decisions for agent access requests:
          autonomous approval or referral to human authorization.</t>
        </list><figure anchor="groups-for-A2A"
          title="Agent Authorization Center Architecture">
          <artwork><![CDATA[
                            +-------------------+
                            |  Authorization    |
                            |     Center        |
                            |     (AAC)         |
                            |  - User Identity  |
                            |  - Agent Policies |
                            |  - Auth Decision  |
                            +---------+---------+
                                      ^
                       Auth Request/  |
                       Decision       |
                                      |
     +-------------------+            |          +-------------------+
     |  User-side        |------------+----------|   Resource Party  |
     |  Agent            |        Token Swap     |   (Resource       |
     | (Personal Device) |                       |    Server)        |
     +-------------------+                       +-------------------+
             |
             | Policy Query / User Feedback
             v
     +-------------------+
     |        User       |
     | (Policy Configure)|
     +-------------------+
 
]]></artwork>
        </figure></t>

      <t/>

      <section anchor="usecase1" title="Authorization Flow">
        <t>The authorization flow for an Agent accessing a resource party on
        behalf of a user is as follows.</t>

        <t><list style="empty">
            <t>Step 1: Agent sends an access request to the resource party,
            carrying the user identifier and the AAC identifier.</t>

            <t>Step 2: After receiving the access request, the resource party
            redirects the Agent to the AAC, triggering the authorization flow.
            In detail, the resource party sends an authorization guidance
            message to guide the Agent to initiate an access authorization
            request to the AAC corresponding to the AAC identifier.</t>

            <t>Step 3: On receiving the authorization guidance message, Agent
            sends an access authorization request to the AAC (carrying User
            ID, Agent ID, Resource Party information) in order to obtain an
            authorization code for accessing the resource party.</t>

            <t>Step 4: On receiving the access authorization request, AAC
            performs authorization mode decision: if the resource party is in
            the Agent's autonomous access list, select the Autonomous Approval
            mode; otherwise, select the Human Authorization mode (notify user
            for confirmation).</t>

            <t>Step 5: If the access authorization request is approved through
            either mode, AAC generates an authorization code and returns it to
            the Agent.</t>

            <t>Step 6: After receiving the authorization code, the Agent
            delivers the authorization code to the resource party (e.g., via
            the redirect URI).</t>

            <t>Step 7: The resource party exchanges the authorization code,
            redirect URI, and other information with the AAC's token endpoint
            to request an access token.</t>

            <t>Step 8: The AAC's authorization server returns an access token
            to the resource party, in which the user account identifier, the
            Agent identifier, and the AAC identifier should be included.
            Optionally, the token may include an authorization mode identifier
            indicating whether it was obtained through autonomous approval or
            human authorization.</t>

            <t>Step 9: The resource party validates the token and provides
            services according to the user's entitlements.</t>
          </list>In the Step 4, if the resource party is in the Agent's
        autonomous access list, it means a related policy is matched. The
        policy can be pre-configured by the user. Examples include:</t>

        <t><list style="symbols">
            <t>If the resource party is in the autonomous access list, the AAC
            directly approves the access authorization request (Autonomous
            Approval); </t>

            <t>If the resource party is in the forbidden list, the AAC rejects
            the access authorization request; </t>

            <t>If the resource party is not in any list, the AAC notifies the
            user for confirmation (Human Authorization). </t>
          </list>When the Autonomous Approval policy is matched, the AAC would
        autonomously approve the access authorization request without human in
        the loop. When the Human Authorization policy is matched, the AAC
        would approve the access authorization request based on the
        authorization instruction received from the user.</t>

        <t/>
      </section>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>TBD.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>TBD.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>TBD.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.RFC.6749"?>
    </references>
  </back>
</rfc>
