For better or worse there is a long and winding road that has led to where
we are now with these parameters. And there has been plenty of
misunderstanding, miscommunication, dysfunction, questionable decisions,
and general SDO process along the way that/'s helped get to this point.
I've certainly been a party to much of that so I'm not trying to point
fingers here. And I'm not going to try and recount all that's happened -
just the parts that (I think) are useful or relvent at this point. And
really I'm just wanting to say that it has been pretty messy getting to the
mess we have now.

The token-exchange draft defines both the "resource" and "audience"
parameters for use in the context of a
"urn:ietf:params:oauth:grant-type:token-exchange" grant type request to the
token endpoint. There is a lot of overlap between "resource" and "audience"
and I'm not sure there was necessarily a good reason to have the two but it
just kind of unfolded that way (the use of a client ID as an audience is
one case that's mentioned that isn't a URI).  That document is in IESG
evaluation (which is towards the end of the RFC process) and had a few
DISCUSS ballot positions raised against it. Resulting from one of those
DISCUSSes, which was unrelated to "resource"/"audience" but rather because
of the OAuth URIs as far as I understand, one of the IESG members steered
us in the direction of, and facilitated, the early registration requests.

So token-exchange is currently requesting registration of (among other
things) the "resource" and "audience" parameters at the token endpoint and
the document describes their use only in the context of a token request
with a  "urn:ietf:params:oauth:grant-type:token-exchange" grant type. I
strongly disagree with the idea, in theory or practice, that a parameter
suddenly becomes meaningful and usable outside the context of its
definition just by showing up in the registry.

While the idea has been floating around for a long time, the actual
resource-indicators draft as a WG item is considerably more recent than
token-exchange. The resource-indicators draft defines the "resource"
parameter as generally applicable for all requests to the token endpoint
and the authorization endpoint. The meaning of "resource" in
resource-indicators is consistent/compatible with the meaning in
token-exchange but resource-indicators defines a broader more generalized
usage of it. There's some TODO text in the IANA section that tries to
capture that situation
https://tools.ietf.org/html/draft-ietf-oauth-resource-indicators-02#section-4.1
and I was hopeful that the actual registration could be handled/updated to
reflect the situation in a sane way.

Recently the language in the resource-indicators draft was changed/softened
a bit to clarify that the value of the "resource" parameter is a URI which
can be an abstract identifier for the target resource and doesn't
necessarily have to correspond to a network addressable location. I believe
that's still very much compatible with it's usage and definition in
token-exchange but it does, to Filip's point, shine some light on the
question of the value of, or need for, the separate "audience" parameter at
all.

I'm less familiar with the happenings in ACE but there seems to have been
some desire for a parameter that is somewhat similar. As far as I can tell,
the intended usage has been for the token endpoint only. I believe it had
the name "aud" at one point. It was pointed out that OAuth ran into
conceptual problems with "aud" as a parameter name at the authorization
endpoint because of a name conflict when used in conjunction with signed
authorization requests made via redirection though the browser to the
authorization endpoint with the likes of
https://tools.ietf.org/html/draft-ietf-oauth-jwsreq-17 or
https://openid.net/specs/openid-connect-core-1_0.html#RequestObject.
Although the ACE "aud" parameter wasn't defined for the authorization
endpoint AFAIK the name was changed to "req_aud" to avoid potential future
collision and/or confusion (I think anyway).

That's the state of things right now as best I understand and can
articulate. So where does that leave us?

My preference (I think anyway after thinking about it for hours while
writing this email) would be to remove the "audience" parameter from
token-exchange. And to have token-exchange defer to resource-indicators for
the core definition and registration of the "resource" parameter while just
having text describing how it's used in the token-exchange context for ease
of reading and understanding. A URN scheme could be prescribed in
token-exchange for how to convey a client ID in a URI (something like
"urn:ietf:params:oauth:client_id:<value>" using the subnamespace procured
by RFC 6755). ACE could also reference resource-indicators and utilize the
"resource" parameter rather than "req_aud" - to do so it seems it would
also need to provide guidance or definition on how to place arbitrary
string values into a URI.

Regardless of keeping the "audience" parameter or not, it would seem to
make some sense to have token-exchange defer to resource-indicators for the
core definition and registration of the "resource" parameter. But the
drafts are at different stages in the process (in the wrong order) and I'm
way out of my depth in understanding what can and can't be done with
references to documents that aren't as far along towards being RFC.

I'm not even sure how much change is possible/allowed to token-exchange at
this point, given that it's almost done.

An alternative is to leave "resource" and "audience" in token-exchange and
have it do the registrations. Then have resource-indicators expand the
"resource" registration to add "authorization request" as a usage location
(and maybe update the additional context of use too).  ACE could use
"audience" rather than "req_aud" and further define it for general use and
do a similar kind of expanded registration request for "audience" to
account for its more generalized definition.

There are, of course, other alternatives too. But that's more than enough
typing from me for the time being.






On Thu, Feb 7, 2019 at 8:38 AM Filip Skokan <panva...@gmail.com> wrote:

> To add to that,
>
> 3. If a device uses HTTP Token Exchange it can use both resource and
> audience parameters.
>
> With the recent discussion and changes to the language in the resource
> indicators draft, does the token exchange spec need a unique audience
> parameter?
>
> S pozdravem,
> *Filip Skokan*
>
>
> On Thu, 7 Feb 2019 at 16:25, Hannes Tschofenig <hannes..tschofe...@arm.com
> <hannes.tschofe...@arm.com>> wrote:
>
>> Hi all,
>>
>>
>>
>> after re-reading token exchange, the resource indicator, and the
>> ace-oauth-params drafts I am wondering whether it is really necessary to
>> have different functionality in ACE vs. in OAuth for basic parameters.
>>
>>
>>
>> Imagine I use an Authorization Server and I support devices that use CoAP
>> and HTTP.
>>
>>
>>
>>    1. If a device uses CoAP then it has to use the req_aud parameter to
>>    indicate to the authorization server that it wants to talk to a specific
>>    resource server. It would either put a URI or a logical name there.
>>    2. If a device uses HTTP then it has to use either the resource
>>    parameter to indicate to the authorization server that it wants to talk to
>>    a resource server, which is identified using a URI, or the audience
>>    parameter, if it uses a logical name.
>>
>>
>>
>> Ciao
>> Hannes
>>
>>
>>
>>
>>
>>
>> IMPORTANT NOTICE: The contents of this email and any attachments are
>> confidential and may also be privileged. If you are not the intended
>> recipient, please notify the sender immediately and do not disclose the
>> contents to any other person, use it for any purpose, or store or copy the
>> information in any medium. Thank you.
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org
>> https://www.ietf.org/mailman/listinfo/oauth
>>
> _______________________________________________
> Ace mailing list
> a...@ietf.org
> https://www.ietf.org/mailman/listinfo/ace
>

-- 
_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
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to