Obtaining an On-Behalf-Of authorization token

Obtaining an On-Behalf-Of authorization token

In this article I want to focus on what steps are required for a customer care system to obtain an on-behalf-of token for a user calling for help to complete a transaction. This is a follow up to a previous post where I was discussing the nuances of delegated authorization and the more specific on-behalf-of use case.

Let's start with a concrete use case. Alice calls her financial institution’s customer care number in order to get help completing a transaction; say transferring funds between accounts. Alice is connected to customer care agent Bob who will help her complete the task. The customer care software Bob is using will need to obtain an on-behalf-of token so that Bob can act as Alice's fiduciary for this transaction.

There are a couple of key concepts that must be present in such a flow:

  • Transparency and explicit consent - Bob needs Alice to explicitly consent to allow him to complete the transaction on her behalf. Alice needs to clearly understand what authorization she is delegating to Bob and the limits of that authorization (in this case, to complete the funds transfer). The consent needs to be bound to the specific transaction and not a generic delegated authorization for all funds transfer.
  • Prevent insider misuse - the system must protect against Bob being an "insider threat" and consenting on Alice's behalf to transaction she didn't request.
  • Notification of activity - At the completion of the flow when the funds have been successfully transferred, a "receipt" of activity needs to be sent to Alice so that she has a record of what happened. Transparency through notification is another key aspect of this flow.


Next let's look at how to implement such a flow. This sequence diagram is not at the protocol step level but rather at the conceptual level of the flow. Another post can dig into what the actual "bits on the wire" might look like and what kinds of validation and processing are necessary. For now, I just want to propose a general flow that addresses the points above.


Article content

To address the issue of "transparency and explicit consent", the Identity Platform is the service that is communicating intent to Alice via a push message to the financial institution app on her phone. This push message can include the intent to transfer funds, the customer care agent she is talking to, etc along with a one-time-code that expresses Alice's explicit consent to allow Bob to transfer the money on her behalf.

Regarding "prevent insider misuse", Bob is completely unaware of the one-time-code provided to Alice by the Identity Platform. This means that Bob is dependent on Alice to provide the correct code in order for the transfer to be successful. The Identity Platform can associate other context with the issued one-time-code so that Bob can't change the intent when the customer care software asks for the on-behalf-of access_token.

Finally, "notification of activity", is accomplished through the receipt of funds transferred in step 14. This allows Alice to confirm that her request was carried out correctly.


Next Steps

What do you think of this proposal? Is it headed in the correct direction? What did I miss? What other variations of this flow are necessary for other on-behalf-of use cases? I look forward to continuing the conversation in the comments.

Nagesh Pobbathi

Product Leader | x-Founder | Led AI products used by 100M+ users in Search, Advertising, Identity, and Developer Tools | Capital One, Yahoo!, Quest.ai, GameCommerce

8mo

Thanks George Fletcher for sharing this. How would you extend this multiple transactions in a session? Transactions could be of same or different types. Could there be a session-level obo token that could still show the details of the session activity to Alice?

Like
Reply
Leonardo Maldonado

Chief of Technology Alliances

8mo

Thanks for sharing your point of view in this article George Fletcher

Nidhin Benjamine

Senior Lead Software Engineering| Senior Manager

9mo

A malicious agent could trick Alice into providing consent for a larger or different transaction than she intended...maybe a dual approval required? Just a thought

Arndt Schwenkschuster

Software Engineer at Defakto and Editor at IETF

9mo

Interesting thoughts! Who do you see as the subject of the access_token used to initiate the transfer?

Andy Barlow

Senior Software Engineer @ Auth0 | Standards, Distributed Systems, Identity and IAM

9mo

Oh ok, so this is describing a use case where 2 parties need to agree and be notified, with the middle part (from customer care client -> AS flow) reading much like CIBA to me. Is that the case?

To view or add a comment, sign in

More articles by George Fletcher

  • When Science Fiction becomes Reality

    This morning as I was preparing for the 41st addition of the Internet Identity Workshop, I started down this rabbit…

    2 Comments
  • Identifiers for Agentic AI

    I’ve seen many discussions regarding identifiers for Agentic AI when it comes to security, audit, compliance and…

    46 Comments
  • A Delegated Authorization Use Case

    This use case has come up in previous articles and posts, and I’d like to take a deeper look at what’s possible today…

    20 Comments
  • Is Federated Authorization a thing?

    While I don’t often hear these words combined, I do see work that could be classified this way. Take for instance the…

    14 Comments
  • Components of an on-behalf-of delegation pattern

    While at the OAuth Security Workshop (Feb 2025) and more recently the Internet Identity Workshop (April 2025), I had…

    29 Comments
  • Authentication or Authorization: Which comes first?

    I remember having this conversation with Ian Glazer at an European Identity and Cloud Conference a few years ago. We…

    24 Comments
  • Delegated Authentication

    We all know about Federated Authentication (more commonly known as Single-Sign-On [SSO])… so what is Delegated…

    15 Comments
  • What might an on-behalf-of token look like?

    In a previous Obtaining an on-behalf-of Authorization Token, I described a method for obtaining an on-behalf-of…

    11 Comments
  • The importance of "Consent Receipts" in an AI Agent world

    In my last post on the topic of delegated authorization use cases, the comments brought up the use case of an AI Agent…

    11 Comments
  • Off to New Adventures!

    Today marks my last day at Capital One. The last 3 years have been rewarding, unexpected and challenging both…

    76 Comments

Others also viewed

Explore content categories