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:
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.
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.
Product Leader | x-Founder | Led AI products used by 100M+ users in Search, Advertising, Identity, and Developer Tools | Capital One, Yahoo!, Quest.ai, GameCommerce
8moThanks 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?
Chief of Technology Alliances
8moThanks for sharing your point of view in this article George Fletcher
Senior Lead Software Engineering| Senior Manager
9moA 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
Software Engineer at Defakto and Editor at IETF
9moInteresting thoughts! Who do you see as the subject of the access_token used to initiate the transfer?
Senior Software Engineer @ Auth0 | Standards, Distributed Systems, Identity and IAM
9moOh 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?