Hi Ashwin,

Thank you very much for pointing me to EPOP. I read it with great interest. 
What struck me in particular is the structure of a holder-signed envelope 
carrying an issuer-signed token, which, seen from the VC side, looks very much 
like a Verifiable Presentation.

The work I am currently focusing on is about making an RFC 9068 access token 
valid as a W3C VC at the same time, covering the data model of the token itself 
and the interoperability design between the two worlds. In this structure the 
AS is also the issuer and the RS is also the verifier, and I use DPoP for proof 
of possession so that existing resource servers can accept it as is.

I noticed that the EPOP document mentions a profile carrying SD-JWT in ntk as 
future work. In the same way, I think an access token of this form could also 
be carried in ntk. I have learned a lot from the careful thought you have put 
into EPOP, and I hope to keep learning from it as it develops.

Thank you again.

Best regards,
Su-hyeon

-----Original Message-----
From: "Ashwin Ambekar"<[email protected]>
To: "Su-hyeon Forten Lee"<[email protected]>;
Cc: "Yaron ZEHAVI"<[email protected]>; "oauth"<[email protected]>;
Sent: 2026-10-01 (목) 01:33:23 (GMT+09:00)
Subject: [OAUTH-WG] Re: New draft: Presenting Issuer-Signed JWT Credentials to 
Resource Servers with DPoP

Hi Su-hyeon,
Have you looked at EPOP draft? Please let me know if this is closer to what you 
are looking for :  https://datatracker.ietf.org/doc/draft-ambekar-oauth-epop/

Regards,
Ashwin

On Wed, Sep 30, 2026 at 8:04 AM Su-hyeon Forten Lee <[email protected]> wrote:

Warren,

Thank you for laying this out in detail.

Yes, the idea was to use the credential like an access token to make 
authenticated calls to the RS, and as you point out, it was really closer to a 
way for a client acting on behalf of a user to authenticate itself.

To be honest, my long-term hope is to have something that is an access token 
and a credential at the same time, in a structure where the AS is also the 
issuer and the RS is also the verifier. For convenience, please allow me to use 
a JOSE-secured W3C VC as the example. The first thing that collides is typ. RFC 
9068 requires the RS to check for at+jwt, while VC-JOSE-COSE only recommends 
(SHOULD) vc+jwt and allows cty: vc to identify the content. So with a VC 
carrying typ: at+jwt and cty: vc, I wonder whether an entity that is both RS 
and verifier could accept it as an ordinary at+jwt, while on the VC side it 
could be accepted through negotiation, for example by defining it as a 
credential format in OpenID4VP. That said, this discussion has shown me that 
this path is much harder than I thought.

I agree that credentials fit better for authenticating to the AS as the holder 
than for use at the RS. The case I had in mind is one where both the holder and 
the AS are under my control, so your approach of treating the AS as the 
verifier and having it complete the flow started by the RS applies directly. I 
also understand that this is already supported from an OAuth standpoint, and 
thank you for saying it is a part you could get behind.

I will rethink the draft with this perspective in mind. Thank you again for 
taking the time, several times over.

Best regards,
Su-hyeon

-----Original Message-----
From: "Warren Parad"<[email protected]>
To: "Su-hyeon Forten Lee"<[email protected]>;
Cc: "Yaron ZEHAVI"<[email protected]>; 
"oauth"<[email protected]>;
Sent: 2026-09-30 (수) 01:14:37 (GMT+09:00)
Subject: [OAUTH-WG] Re: New draft: Presenting Issuer-Signed JWT Credentials to 
Resource Servers with DPoP

Why are trying to send unsolicited credentials to an API / RS.

Is that the part where you are trying to use the credentials as an access token?

How would you even know which credentials should be sent? Is the idea that a 
verifier wouldn't care, they just want any mechanism for a client operating on 
behalf of a user to authenticate themselves?

So said differently... There is an RS that accepts credentials and DPoP, and 
"you" want to make authenticated calls to that RS with the credentials without 
exchanging the exchanges for an access token.

At first glance, it feels like the credentials are the wrong form for this. 
But, credentials are great for autheticating to the AS as the holder. The AS 
requests user identity verification as part of generating the OAuth access 
token.

What systems do you control here? Clearly the holder, if it also includes the 
AS then the implementation I would use is to treat the AS as the verifier and 
have it complete the OAuth exchange flow still started by the RS.

And since the AS user verification is out of scope, this is definitely 
something already supported from an OAuth standpoint. But I think at least 
personally, that is the one part of this I could definitely get behind.

On Tue, Sep 29, 2026, 17:39 Su-hyeon Forten Lee <[email protected]> wrote:

Hi Warren,

Thank you for raising that. I agree it is the key question. Using the KB-JWT is 
certainly a valid option. However, RFC 9901 leaves both how the KB-JWT nonce is 
obtained and how the aud value is represented to the protocol in use, and as 
far as I know nothing defines them for an unsolicited HTTP call where the 
verifier has not sent a request first. So even with the KB-JWT, one would still 
need to define how the resource server delivers a nonce and what goes into aud. 
DPoP, on the other hand, already has a way to deliver a nonce through 
DPoP-Nonce, and binds the proof to the request through htu and htm.

In addition, for a client that already uses DPoP for its access tokens, using 
the same mechanism for credentials means both the resource server and the 
client deal with a single binding mechanism.

This is why I believe that reusing DPoP could bring the two worlds, credentials 
and access tokens, together at the verification level as well.

Thank you again.

Best regards,
Su-hyeon

-----Original Message-----
From: "Warren Parad"<[email protected]>
To: "Su-hyeon Forten Lee"<[email protected]>;
Cc: "Yaron ZEHAVI"<[email protected]>; 
"oauth"<[email protected]>;
Sent: 2026-09-30 (수) 00:19:15 (GMT+09:00)
Subject: Re: [OAUTH-WG] Re: New draft: Presenting Issuer-Signed JWT Credentials 
to Resource Servers with DPoP

Agreed on all accounts. Which means we should ask why. As in if you intend to 
use key bindings why not just use the SD-JWT defined mechanism?

On Tue, Sep 29, 2026, 17:10 Su-hyeon Forten Lee <[email protected]> wrote:

Hi Warren,

Thank you for narrowing it down that way, it is very helpful. As you say, the 
AS side is not the issue. An AS can mint an SD-JWT VC today, and generation and 
verification of both the SD-JWT and the DPoP proof are already specified. 
Creating a DPoP proof for an SD-JWT on the client side is not difficult either. 
The gap is at the next step, on the verifier side.

First, the format. An SD-JWT presentation always ends with a "~", even without 
any disclosures, so it is not a plain JWT. It fits the HTTP header syntax, but 
an existing DPoP resource server that parses the token as a JWT will not accept 
it as is. In this respect, a JOSE-secured W3C VC, being a plain JWT, is 
cleaner. Introspection would avoid the format issue, but then the resource 
server would contact the issuer on every presentation, which is the kind of 
structure credentials are meant to avoid.

Second, key binding. In RFC 9901, whether to require Key Binding is up to the 
verifier's policy, and the only mechanism it defines is the KB-JWT. So a 
resource server can choose not to require SD-JWT Key Binding and check DPoP 
instead, but nothing currently says that the DPoP proof provides equivalent 
binding. Interestingly, an ath computed over the presented SD-JWT covers 
exactly the same bytes as sd_hash, so I believe it already provides nearly the 
same guarantee in practice.

In short, the first is closer to an implementation matter, while the second is 
what is actually missing at the specification level. It is not a missing 
property in the SD-JWT spec, but the lack of a rule stating that, for an SD-JWT 
presented to a resource server, the DPoP proof can serve as the key binding.

This is also why I have been considering setting selective disclosure aside and 
starting from a plain JWT format such as a JOSE-secured W3C VC, although I 
realize that in that case there would be very little left for a specification 
to define.

Thank you again.

Best regards,
Su-hyeon

-----Original Message-----
From: "Warren Parad"<[email protected]>
To: "Su-hyeon Forten Lee"<[email protected]>;
Cc: "Yaron ZEHAVI"<[email protected]>; 
<[email protected]>;
Sent: 2026-09-29 (화) 23:26:04 (GMT+09:00)
Subject: Re: [OAUTH-WG] Re: New draft: Presenting Issuer-Signed JWT Credentials 
to Resource Servers with DPoP

no problem, but I like this path you've now laid out. If you are interested in 
AS minting and distributing a VC, what stops your AS from doing that today via 
the SD-JWT? Do you control the AS? If so, you can make that change, but which 
step of the process would be a problem specifically? Is it attempting to add a 
DPoP signature on top of a sent SD-JWT? from the client, is that the problem. 
That's the only step which seems like it could be a problem, because of course 
the generation and verification of the SD-JWT exists, as well as the RFC for 
generation and verification of DPoP, so the problem you must be alluding to is 
a challenge creating an DPoP signature for the SD-JWT, which step is explicitly 
the issue, is it a missing property in the SD-JWT spec?

On Tue, Sep 29, 2026 at 4:20 PM Su-hyeon Forten Lee <[email protected]> wrote:

Hi Warren,

Thank you for the question, and for taking the time to lay out the 
possibilities so clearly. The first one you describe, using OAuth to generate 
an access token that works as a credential, captures what I meant very 
precisely.

I think this WG's SD-JWT VC is the most suitable format, but to be candid, one 
of the things I ultimately have in mind is a JOSE-secured W3C VC. From an 
engineering point of view, I am looking for a single artifact that works 
unchanged in both worlds: issued by an AS, accepted as a token by a DPoP 
resource server, and accepted as a credential by a VC verifier outside OAuth. 
Along the same lines, I am exploring whether the DPoP proof can take the place 
of the verifiable presentation that the VC side normally uses for holder 
binding. Verification with the AS's JWKs and the DPoP proof are the means to 
that end, and my interest is mainly in reusing what OAuth already provides.

There are several challenges and pieces of work involved, but a representative 
one is defining a set of fields that work the same way for both a credential 
and an access token, such as iss, sub, exp and cnf, along with typ to tell the 
two kinds of token apart and status information. As you know, the biggest 
hurdle was aud, and thanks to the comments in this thread I feel I am finding a 
way through it.

Whether this turns out to be work for the OAuth WG or for somewhere else, I 
have already gained a great deal of insight from this discussion. Thank you 
again.

Best regards,
Su-hyeon

-----Original Message-----
From: "Warren Parad"<[email protected]>
To: "Su-hyeon Forten Lee"<[email protected]>;
Cc: "Yaron ZEHAVI"<[email protected]>; 
<[email protected]>;
Sent: 2026-09-29 (화) 22:48:29 (GMT+09:00)
Subject: Re: [OAUTH-WG] Re: New draft: Presenting Issuer-Signed JWT Credentials 
to Resource Servers with DPoP

What do you mean by "flow over existing OAuth infrastructure" exactly? When you 
say that, it sounds more like you are interested in the generation and 
distribution of credentials by an AS. Using OAuth to generate an access token 
that works as credentials.

Or are you talking about how to verify the credentials using a JWK supplied by 
an AS? Or maybe you are just interested in being able to generate DPoP header 
values for your credentials. DPoP is limited to OAuth, but nothing would stop 
you from creating an OpenID4VP version (if that was your preference), but that 
would be likely out of scope for the OAuth working group.

On Tue, Sep 29, 2026 at 2:29 PM Su-hyeon Forten Lee <[email protected]> wrote:

Hi Yaron,

Thank you very much for taking the time to write such a thoughtful and detailed 
review. I really appreciate it, and I learned a great deal from it.

I agree with the concerns you raise, and reading them carefully, I came to 
think that the key question is how the use case is defined. The 
request-response flow with its nonce, issuer recognition, selective disclosure 
and privacy, wallets acting on behalf of people, and governance limiting which 
credential types a wallet can obtain all apply to credentials held in wallets 
and presented through OpenID4VP, and in those cases I fully agree that 
OpenID4VP is the right tool.

What this draft has in mind is a narrower case. The holder is a non-human 
client that controls its own key, and the credential is issued by an 
authorization server or IdP the resource server already trusts, so from the 
resource server's point of view it sits in the same place as an access token. 
Although the resource server does not request the credential, it can still 
supply its own nonce through DPoP-Nonce, and the cnf key is set and signed by 
an issuer it already trusts, so my understanding is that holder binding is 
established in the same way as for a DPoP-bound access token. If you see a gap 
there, I would be very grateful for your guidance. Your comments made me 
realize this scope did not come through clearly enough in the draft, and I will 
make it explicit in the next revision.

I also realize that within this scope the credential is very close to an access 
token. Coming from the credential side, what I would still like to do is find 
some first step that lets verifiable credentials flow over existing OAuth 
infrastructure, and this narrow case seemed the safest place to start. I would 
value your perspective on whether this is a reasonable way to begin.

On audience, thank you for the concrete suggestions. I will reflect both 
approaches you described, multiple resource values yielding a multi-valued aud 
and an agreed aud value within one trust domain, and recommend a fresh mint 
with an accurate aud across unrelated resource servers, as you advised.

Thank you again for your time and generosity.

Best regards,
Su-hyeon

-----Original Message-----
From: "Yaron ZEHAVI"<[email protected]>
To: "Su-hyeon Forten Lee"<[email protected]>; "Warren 
Parad"<[email protected]>;
Cc: "[email protected]"<[email protected]>;
Sent: 2026-09-29 (화) 19:26:32 (GMT+09:00)
Subject: [OAUTH-WG] Re: New draft: Presenting Issuer-Signed JWT Credentials to 
Resource Servers with DPoP

Dear Su-hyeon,
 
While a resource server can indeed be a credential verifier, the exchange of 
credential presentations in OpenID4VP is different from using access tokens:

Clients send tokens to resource servers in unsolicited HTTP calls, while 
OpenID4VP credential presentation is a response to a credential request which 
contains a nonce to be included in the signed presentation response as replay 
protection mechanism.

A resource server cannot safely accept a credential unless obtained through a 
presentation request it created, as it can’t establish holder binding.

The basic idea to use credential key binding as DPoP might be feasible, but:


Credentials are not access tokens, so their structure might be unsuitable for 
processing by resource servers (e.g issuer not recognized).

Sending the entire credential and not a presentation of selected attributes 
could hinder subject’s privacy.

Credentials are stored in wallets, so in human OBO use-cases the agent / client 
would have a presentation and not control the keys to make presentations.

Non human wallet holders would control both the credentials and their keys, but 
would encounter previously mentioned challenges as well as governance 
frameworks would likely limit eligible wallets which can obtain certain 
credential types (e.g won’t issue an EU PID credential representing a natural 
person to an agent’s wallet).



 
That said, the audience challenge you mention could be solved in other ways, 
such as:

Requesting tokens with resource request parm specifying multiple values à 
obtains token with multi-value aud

Multiple resource servers in the same trust domain could accept an agreed aud 
value, making the token usable for them all


 
Where multiple unrelated resource servers are concerned, a fresh mint with 
accurate aud value is the most secure approach.
 
I hope this helps
Yaron
 

Classification: GENERAL
From: Su-hyeon Forten Lee <[email protected]>
Sent: Monday, September 28, 2026 3:23 PM
To: Warren Parad <[email protected]>
Cc: [email protected]
Subject: [OAUTH-WG] Re: New draft: Presenting Issuer-Signed JWT Credentials to 
Resource Servers with DPoP
 

You don't often get email from [email protected]. Learn why this is important


This message is from an external sender - be cautious, particularly with links 
and attachments.
 
Hi Warren,
 
Thank you for the feedback, I appreciate you taking the time. I think you are 
right that, seen from OAuth, nothing here is new, and I should have made that 
clearer up front: in a way, that is what the document is trying to say.
 
On aud, I should be candid that this was the part I struggled with most. The 
access tokens DPoP is used with in practice require aud, and making it optional 
in the draft may well have been a stretch. My thinking was that the holder is 
the right party to decide the audience; that is what a presentation is. But the 
only aud available is inside the issuer-signed JWT, and the holder cannot set 
it without breaking the issuer's signature, unless one adopts a holder-signed 
wrapper as in the VP model, which is what I was trying to avoid. The DPoP 
proof's htu binds the request, but it is not an audience. I do not have a good 
answer yet, and it needs more thought.
 
I come from the credential side, where it is often assumed that a verifier 
needs to run OpenID4VP. What I hoped to record is that a DPoP-capable resource 
server can already serve as a presentation verifier for SD-JWT-based 
credentials, with only a few small rules: matching cnf.jwk against cnf.jkt, 
computing ath over the presented SD-JWT including its disclosures so that the 
DPoP proof serves as the key binding, and distinguishing such a credential from 
an access token by typ.
 
I suspect I found exciting what is simply ordinary in OAuth, and the draft 
shows it. I will revise several parts with this in mind.
 
Thanks again for the comments.
 
Best regards,
Su-hyeon
 
-----Original Message-----
From: "Warren Parad"<[email protected]>
To: "이수현"<[email protected]>;
Cc: <[email protected]>;
Sent: 2026-09-28 (월) 21:47:57 (GMT+09:00)
Subject: [OAUTH-WG] Re: New draft: Presenting Issuer-Signed JWT Credentials to 
Resource Servers with DPoP
What does the audience matter here? The audience claim is optional, what are 
you trying to do that DPoP doesn't already support, that's the part which isn't 
clear for me. I'm also not sure what agents have to do with this, A client 
interacts with multiple resource servers RS, but what ends up in the token is 
responsibility of the AS, if you don't want audience in the token, your AS 
doesn't have to put one there, right?
 
So I'm still not really sure what can't be done today, or what the change is 
that the draft advocates for. As a bit of feedback, it feels like most if not 
all of the draft is defining what already exists as a summary of OAuth, JWTs, 
and DPoP, and I'm not sure why.
 
On Mon, Sep 28, 2026 at 12:57 PM 이수현 <[email protected]> wrote:

Hi Warren,
 
Thank you for taking the time to read it, and fair point: the introduction is 
too abstract.
 
Some context: I come from the credential side.
In MCP and A2A, OAuth is the first-class mechanism, and from where I sit the 
goal is for credentials to fit into that as closely as possible.
OpenID4VP is excellent where a verifier needs to negotiate with a wallet, but 
that is not this use case.
What struck me is that a DPoP proof already has essentially the same structure 
as the key binding in a verifiable presentation, so an ordinary DPoP-capable 
resource server is, in effect, already a presentation verifier.
 
Concretely: a user delegates to an agent, and the agent calls several resource 
servers (e.g. MCP tool servers) in the same trust domain.
With access tokens, the agent needs a separate audience-restricted token for 
each resource server.
 
The draft lets the AS, or an IdP the resource servers already trust, issue one 
holder-bound credential that the agent presents to each resource server 
directly with DPoP, with revocation through a status list.
If the issuer sets aud, it is enforced as usual, and it can list the set of 
resource servers the credential is meant for.
If aud is omitted, the credential is more flexible, at the cost of per-resource 
audience restriction.
 
Does this make the use case clearer?
If you think an existing mechanism already covers it, I would appreciate a 
pointer.
 
Best regards,
Su-hyeon
 
-----Original Message-----
From: "Warren Parad"<[email protected]>
To: "이수현"<[email protected]>;
Cc: <[email protected]>;
Sent: 2026-09-28 (월) 19:00:47 (GMT+09:00)
Subject: Re: [OAUTH-WG] New draft: Presenting Issuer-Signed JWT Credentials to 
Resource Servers with DPoP
I'm pretty confused by this. I don't really understand what defines or the 
specific use case that is different from the existing mechanisms.
 
I think the most poignant question for me would be related to this statement in 
the draft:
 The gap is most visible for AI agents.
 
What gap?
 
On Mon, Sep 28, 2026 at 11:31 AM 이수현 <[email protected]> wrote:

Hi all,
 
I have posted a new individual draft:
https://datatracker.ietf.org/doc/draft-lee-oauth-dpop-credential-presentation/
 
It lets a client present an issuer-signed JWT credential directly to a resource 
server using DPoP (RFC 9449), with no authorization server or OpenID4VP flow in 
between.
The wire format is that of a DPoP-bound access token; the draft adds only three 
rules: the issuer is an AS or IdP the resource server already trusts, the 
credential may carry no issuer-set audience, and the resource server checks its 
status.
 
The motivation is clients that can simply submit a credential, such as AI 
agents calling MCP or A2A endpoints, for which OpenID4VP is more than needed.
It follows the pattern of draft-ietf-oauth-attestation-based-client-auth, but 
for the holder's credential rather than client authentication.
 
Comments are very welcome.
 
Best regards,
Su-hyeon Forten Lee



_______________________________________________
OAuth mailing list -- [email protected]
To unsubscribe send an email to [email protected]








 
This message and any attachment ("the Message") are confidential. If you have 
received the Message in error, please notify the sender immediately and delete 
the Message from your system, any use of the Message is forbidden. 
Correspondence via e-mail is primarily for information purposes. RBI neither 
makes nor accepts legally binding statements via e-mail unless explicitly 
agreed otherwise. Information pursuant to § 14 Austrian Companies Code: 
Raiffeisen Bank International AG; Registered Office: Am Stadtpark 9, 1030 
Vienna, Austria; Company Register Number: FN 122119m at the Commercial Court of 
Vienna (Handelsgericht Wien).



_______________________________________________
OAuth mailing list -- [email protected]
To unsubscribe send an email to [email protected]
















_______________________________________________
OAuth mailing list -- [email protected]
To unsubscribe send an email to [email protected]



--
Regards
Ashwin Ambekar
_______________________________________________
OAuth mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to