Keeping things simple is always good but I think the recommendations and 
requirements the draft and the resulting changes in RFCs should allow systems 
that use out-of-band communication of endpoint URL to continue to use those 
endpoints as audience. The validity of these endpoint urls is as good as the 
validated issuer from RFC8414 metadata.

What the current draft requires makes these systems less secure because now an 
assertion can be used at any endpoint at the server.

Human error is always possible, and we cannot protect against that, really. 
What we should do is make easy errors hard. So, yes probably clients who use 
out-of-band communication can also be tricked into doing something stupid. But, 
I think, we should concentrate on automated "mistakes".

If the client received the endpoint url out-of-band and chooses to use it as 
the audience value in an assertion then the client MUST not send the assertion 
to a different endpoint.
If the client uses RFC8414 and validated the endpoint url by matching it to the 
validated issuer and chooses to use it as the audience value in an assertion 
then the client MUST not send the assertion to a different endpoint.

Another part of the attack is that the client uses the same key to sign its 
assertions regardless of the audience. And it should be RECOMMENDED to choose a 
client signing key that is unique to for each AS. I know that signatures are 
not a panacea, there is currently no convention in resource server metadata to 
say "this signing key is for AS1, and that is for AS2". Maybe dynamic client 
registration can do that?

Systems that do not use URLs as issuer identifier cannot use rfc8414.
I think following sentence does not apply to those systems.

  *

A general description of the updates made is to require that the
   issuer identifier URL of the authorization server, as defined in
   [RFC8414], be used as the sole value of the audience of the JWT
   client authentication assertion.

Removing choices is good but requiring the issuer URL to be used as the sole 
value of the audience of the JWT client authentication assertion makes some 
systems less secure because the assertion can now be used at all endpoints of 
the AS.
Even if that sentence is changed to the following, which allows e.g. UUIDs as 
issuer identifiers, the resulting assertion is still usable at all endpoints.

"A general description of the updates made is to require that the   issuer 
identifier of the authorization server be used as the sole value of the 
audience of the JWT client authentication assertion."

The PR does not change this sentence, because I did want to change too much in 
one PR. I am proposing that change now in 
https://github.com/oauth-wg/draft-ietf-oauth-rfc7523bis/pull/24/changes/1207cfb1556b110a20e90c9da1b47528e6cfa461.
 I still think that creates the risk that assertions are now acceptable at all 
endpoints.

//Axel

ps: I removed the github email address because that seems to result in strange 
effects.

From: Brian Campbell <[email protected]>
Date: Monday, 2. February 2026 at 19:19
To: Nennker, Axel <[email protected]>
Cc: [email protected] <[email protected]>, 
reply+aanemb3vnwtdtwwiasng5ndj6pcapevbnhhof6d...@reply.github.com 
<reply+aanemb3vnwtdtwwiasng5ndj6pcapevbnhhof6d...@reply.github.com>
Subject: Re: [OAUTH-WG] Unvalidated metadata is the problem Re: 
draft-ietf-oauth-rfc7523bis more specific aud is better

It has been suggested/argued that out-of-band exchange of AS information is 
potentially subject to the same kinds of issues from an AS with bad intent via 
social engineering or even service documentation. It seems to me a little less 
likely in those cases but certainly still possible. So the online vs. 
out-of-band obtainment of metadata values didn't seem like a meaningful enough 
distinction to base security controls or options on.

As I understand it, the root of the issue is a little different and/or subtle 
than what you've described and is more about sending/accepting the token 
endpoint as aud to/at endpoints other than the token endpoint itself. That URLs 
in metadata aren't and can't be validated is part of the issue but not the 
entirety of it.

Using only the endpoint that the request is sent to as the aud value is also 
secure with respect to the problem as far as I understand it. But I think it's 
arguable that using the endpoint is really any more secure than the issuer 
identifier. And after much discussion the working group decided to use the 
issuer identifier and only that to keep optionality down and simplify things as 
much as possible.



On Thu, Jan 29, 2026 at 8:20 AM 
<[email protected]<mailto:[email protected]>> 
wrote:
Hi,

I think the draft should make it clear that only systems that take endpoint 
urls from server metadata are at risk.

A system that uses preconfigured endpoint urls e.g. for token_endpoint are not 
affected by the discussed attacks.

Those systems are better off when they use an audience value that equals the 
url the assertion is sent to, because then the assertion is not usable at a 
different endpoint at the same issuer/AZ.

Requiring the issuer to be used in those systems weakens security.

Also, systems, where all endpoint urls start with the same issuer url string 
are not at risk.

Example server:
1)
  https://account.booking.com/.well-known/openid-configuration
"issuer": "https://account.booking.com<https://account.booking.com/>",
"token_endpoint": "https://account.booking.com/oauth2/token/v2";

2)
https://accounts.login.idm.telekom.com/.well-known/openid-configuration
   "issuer": 
"https://accounts.login.idm.telekom.com<https://accounts.login.idm.telekom.com/>",
   "authorization_endpoint": 
"https://accounts.login.idm.telekom.com/oauth2/auth";,
   "token_endpoint": "https://accounts.login.idm.telekom.com/oauth2/tokens";,
   "userinfo_endpoint": "https://accounts.login.idm.telekom.com/userinfo";,
   "revocation_endpoint": 
"https://accounts.login.idm.telekom.com/oauth2/revoke";,
   "backchannel_auth_start": 
"https://accounts.login.idm.telekom.com/oauth2/bc-auth/start";,
   "backchannel_auth_end": 
"https://accounts.login.idm.telekom.com/oauth2/bc-auth/end";,
   "logout_endpoint": 
"https://accounts.login.idm.telekom.com/sessionmessage/logout";,
   "end_session_endpoint": 
"https://accounts.login.idm.telekom.com/sessionmessage/logout";,

All endpoint urls that start with the issuer value can be trusted and can 
safely be used as audience values.

The draft should mention that endpoint urls taken from metadata are the problem 
and that all systems that do not rely on metadata are not affected.

That should also be mentioned in all section of the draft that change RFCs, I 
think.

Kind regards
Axel







From: 
[email protected]<mailto:[email protected]> 
<[email protected]<mailto:[email protected]>>
Date: Sunday, 18. January 2026 at 16:40
To: [email protected]<mailto:[email protected]> 
<[email protected]<mailto:[email protected]>>
Subject: [OAUTH-WG] draft-ietf-oauth-rfc7523bis more specific aud is better

Hi,

I created https://github.com/oauth-wg/draft-ietf-oauth-rfc7523bis/pull/24
because I think that the more specific the aud value the better if that 
assertion is sent to the same url as the aud value.

There could be an egress rule at the client that protects client applications 
to send assertions to endpoints with different aud values.

The important point is that aud and endpoint to which the assertion is sent are 
the same. And then the URL cannot be misused at a different endpoint.

If the client sends an assertion to an endpoint, then using that endpoint URL 
as the aud value, then that is more secure than using the issuer identifier 
because this assertion is now only valid at this endpoint. Using the issuer 
identifier as the audience value less secure.
The root cause of the attack is that token url from the metadata is not 
mandatory to validate and hard to validate if the token url is not relative to 
issuer.

Using issuer identifier as the aud still allows to use the assertion at 
different endpoints at the same authorization server. Having the specific url 
the assertion is sent to as aud prevents that.

Regarding metadata and when e.g. token_endpoint can be trusted, that is when 
issuer url and token_endpoint are relative to each other.

If issuer url in the metadata is e.g. https://issuer.example.com/realms/realm
And token_endpoint is https://issuer.example.com/realms/realm/token
Then token_endpoint url can be “trusted”, because issuer was validated as per 
rfc8414.

If URLs are not based on metadata, but received out-ot-band then more specific 
urls as aud are more secure than using issuer.

Kind regards
Axel





_______________________________________________
OAuth mailing list -- [email protected]<mailto:[email protected]>
To unsubscribe send an email to 
[email protected]<mailto:[email protected]>

CONFIDENTIALITY NOTICE: This email may contain confidential and privileged 
material for the sole use of the intended recipient(s). Any review, use, 
distribution or disclosure by others is strictly prohibited.  If you have 
received this communication in error, please notify the sender immediately by 
e-mail and delete the message and any file attachments from your computer. 
Thank you.
_______________________________________________
OAuth mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to