As mentioned below, I agree the two can be separated- but I also agree with George on the need to be clear an easy to reference for developers. Just adding a reference to req_aud would just raise the cyclomatic complexity of the specs, which is already unusably high for mere mortals in the OAuth2/OIDC family of specs.
One additional complication is that this specification is reusing a parameter that is already used in a *very* large number of production systems (small example here <https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-protocols-oauth-code>), and whose concrete semantic happens to be prevalently logic identifier. If the parameter you are defining here has a different semantic, at the very least it would seem good hygiene to rename it to avoid collision and confusion. On Wed, Jan 23, 2019 at 11:03 AM Mike Jones <Michael.Jones= 40microsoft....@dmarc.ietf.org> wrote: > I agree with John’s logic. The physical resource and logical resource > should use different identifiers. Fortunately, we already have “resource” > and “req_aud” for these parameters. I believe we’re good to go, as-is. > > > > -- Mike > > > > *From:* OAuth <oauth-boun...@ietf.org> *On Behalf Of * John Bradley > *Sent:* Wednesday, January 23, 2019 10:56 AM > *To:* oauth@ietf.org > *Subject:* Re: [OAUTH-WG] Shepherd write-up for > draft-ietf-oauth-resource-indicators-01 > > > > I don't think they are necessarily mutually exclusive, that is why I think > there is value in allowing them to be specified separately. > > As an AS in the distributed OAuth case knowing that a client interacting > with RS https://fire.hhs.com as the resource wants a OAuth token with an > audience of HHS and a scope of read. > > Without proof of possession we need to keep bad RS from asking for tokens > with scopes and audiences of other RS that can be replayed. > > I really like keeping the resource simple and unspoofable, it is the URI > of the RS where you are presenting the AT. > > I prefer to keep that separate from the logical resource that may span > more than one RS endpoint. > > Merging the two and we are probably back at the AS looking into the URI to > figure out which one it is. I think that is harder for implementations and > more likely to have security issues down the road. > > John B. > > On 1/23/2019 1:44 PM, Vittorio Bertocci wrote: > > Hi all, > > thanks for you patience. Brian and myself iterated on modifying the text > to cover the logical identifier use case, highlighting the security > implications of going that route. You can find the revised text in > https://github.com/vibronet/i-d/blob/master/draft-ietf-oauth-resource-indicators.xml, > see the commits in the history from January 21 for the specific changes. > > Note: I also had a chat with John offline, and he expressed the desire to > split the resource parameter in two distinct parameters to better signal > the intended usage. I am sure he can elaborate. I have nothing against it > in principle, as long as we leave nothing as exercise to the reader and we > are very clear on usage (e.g. mutual exclusivity, etc) but didn't have a > chance to speak w Brian about it. If the discussion stretches further, I > would suggest we pause it and let him enjoy his time off for the rest of > the week. > > > > On Mon, Jan 21, 2019 at 5:35 PM Rifaat Shekh-Yusef <rifaat.i...@gmail.com> > wrote: > > Thank you guys! > > > > On Monday, January 21, 2019, Vittorio Bertocci <vitto...@auth0.com> wrote: > > Hi Rifaat, > > absolutely. Brian and myself already started working on some language, > however this week he is in vacation hence it might take few days before we > come back to the list with something. > > Cheers, > > V. > > > > On Mon, Jan 21, 2019 at 9:35 AM Rifaat Shekh-Yusef <rifaat.i...@gmail.com> > wrote: > > Brian, Vittorio, > > > > To move this discussion forward, can you guys suggest some text to make > the logical identifier usage clearer? > > > > Regards, > > Rifaat > > > > > > On Mon, Jan 21, 2019 at 10:32 AM Brian Campbell <bcampbell= > 40pingidentity....@dmarc.ietf.org> wrote: > > As I suggested before, I do think that's within the bounds of the draft's > definition of 'resource' as a URI. And that perhaps all that's needed is > some minor adjustment and/or augmentation of some text to make it more > clear. > > > > On Sun, Jan 20, 2019 at 7:39 PM Vittorio Bertocci <vitto...@auth0.com> > wrote: > > [sent to John only by mistake, resending to the ML] > > > > In Azure AD v1 & ADFS, that's resource. It could be used for both network > and logical ids, with the concrete usage in the wild I described earlier. > > In Azure AD v2, the resource as explicit parameter (network, logic or > otherwise) is gone and is expressed as part of the scope string of all the > scopes requested for a given resource- but it still exist in practice tho > as it still end up in the resulting aud of the issued token. > > This is 9 months old info hence > > > > On Sun, Jan 20, 2019 at 17:58 John Bradley <ve7...@ve7jtb.com> wrote: > > What is the parameter that Microsoft is using? > > On 1/20/2019 3:59 PM, Vittorio Bertocci wrote: > > First of all, it wasn't my intent to disrupt the established process. In > my former position I wasn't monitoring those discussions hence I didn't > have a chance to offer feedback. When I saw something that gave me the > impression might lead to issues, and given that I worked with actual > deployments and developers using a similar parameter for a long time, I > thought prudent to bring this up. I really appreciate Rifaat's stance on > this. End of preamble. > > > > Ultimately my goal is for developers to have guidance on how to work with > the concept of logical resource in a standard compliant way, hence it > doesn't strictly matter whether the definition of the corresponding > parameter lives in oauth-resource-indicators or elsewhere. > > That said. Reading through the draft, it would appear that most of the > reasons for which the spec was created apply to both the network > addressable and the logical resource types: knowing what keys to use to > encrypt the token, constrain access tokens to the intended audience, > avoiding overloading scopes with resource indicating parts... those all > apply to network addressable and logic identifiers alike. And both > parameters are expected to result in audience restricted tokens. It seems > the only difference comes at token usage time, with the network addressable > case giving more guarantees that the token will go to its intended > recipient, but the request and audience restriction syntax seems to be > exactly the same. > > On top of this: in the 99.999% of the scenarios I encountered in the wild > in the last 5 years of using the resource parameter in the MS ecosystem, > the resource identifier was known at design time: the developer discovered > it out of band and placed it in the app config at deployment time. Those > aren't fringe cases I occasionally encountered: the resource parameter in > Azure AD v1 and ADFS was mandatory, hence literally every solution i saw or > touched used it. As Brian suggested, this is a scenario where the security > advantages of the network addressable case aren't as pronounced as in the > case in which the client discovers the resource identifier at runtime. This > isn't just because there is no specification suggesting location should be > explicitly indicated, it's because there are many practical advantages at > development and deployment time to be able to use logical identifiers- and > if the *concrete *security advantages don't apply to the their case, > people will simply not comply. > > > > In summary: creating two different parameters in two different documents > is better than ignoring he logical identifier case altogether, however I > think that not acknowledging the logical id case > in oauth-resource-indicators is going to create confusion and ultimately > not be as useful to the developer community as it could be. > > > > > > > > On Sat, Jan 19, 2019 at 12:38 Phil Hunt <phil.h...@oracle.com> wrote: > > +1 to Mike and John’s comments. > > Phil > > > On Jan 19, 2019, at 12:34 PM, Mike Jones < > Michael.Jones=40microsoft....@dmarc.ietf.org> wrote: > > I also agree that “resource” should be a specific network-addressable URL > whereas a separate audience parameter (like “aud” in JWTs) can refer to one > or more logical resources. They are different, if related, things. > > > > Note that the ACE WG is proposing to register a logical audience parameter > “req_aud” in https://tools.ietf.org/html/draft-ietf-ace-oauth-params-01 - > partly based on feedback from OAuth WG members. This is a general OAuth > parameter, which any OAuth deployment will be able to use. > > > > I therefore believe that no changes are needed to > draft-ietf-oauth-resource-indicators, as the logical audience work is > already happening in another draft. > > > > -- Mike > > > > *From:* OAuth <oauth-boun...@ietf.org> *On Behalf Of *John Bradley > *Sent:* Saturday, January 19, 2019 9:01 AM > *To:* Brian Campbell <bcampb...@pingidentity.com> > *Cc:* Vittorio Bertocci <Vittorio=40auth0....@dmarc.ietf.org>; IETF oauth > WG <oauth@ietf.org> > *Subject:* Re: [OAUTH-WG] Shepherd write-up for > draft-ietf-oauth-resource-indicators-01 > > > > We need to decide if we want to make a change. > > > > For security we are location centric. > > > > I prefer to keep resource location separate from logical audience that can > be a scope or other parameter. > > > > If becomes harder for people to use the parameter correctly if we are too > flexible. > > > > I would rather have a separate logical audience parameter if we think we > want one. > > > > John B. > > > > On Sat, Jan 19, 2019, 11:41 AM Brian Campbell <bcampb...@pingidentity.com > wrote: > > No apology needed, Rifaat. And I apologize if what I said came off the > wrong way. I was just trying to make light of the situation.. And I agree > that we should not be hamstrung by the process and there are times when it > makes sense to be flexible with things. > > > > On Fri, Jan 18, 2019 at 6:22 PM Rifaat Shekh-Yusef <rifaat.i...@gmail.com> > wrote: > > Sorry Brian, I was not clear with my statement. > > I meant to say that we should not allow the process to prevent the WG from > producing a quality document without issues, assuming there is an issue in > the first place. > > Ideally we want to get these identified during the WGLC, but things happen > and sometimes the WG misses something. > > > > I hear you and agree that this make things difficult for authors. We will > make sure that this does not become the norm, and we will try to stick to > the process as much as possible. > > > > Regards, > > Rifaat > > > > > > On Fri, Jan 18, 2019 at 5:35 PM Brian Campbell <bcampb...@pingidentity.com> > wrote: > > Thanks Rifaat. Process is as process does, right? I do kinda want to > grumble about WGCL having passed already but that's mostly because replying > to these kinds of threads is hard for me and I'll just get over it... > > > > As far as I understand things, the security concerns come into play when > the client is being told the by the resource how to identity the resource > like is described in > https://tools.ietf.org/html/draft-ietf-oauth-distributed-01 and using the > actual location in that context ,along with some other checks prescribed in > that draft, prevents the kind of issues John described earlier in the > thread. > > In cases where the client knows the resource a priori or out-of-band or > configured or whatever, I don't think the same security concerns arise. And > using such a known value, be it an actual location or logical > representation, would be okay. > > The resource-indicators draft is admittedly somewhat location-centric in > how it talks about the value of the 'resource' parameter. But ultimately it > defines it as an absolute URI that indicates the location of the target > service or resource where access is being requested. A location can be > varying shades of abstract and I'd say that using a URI as 'resource' > parameter value that's a logical identifier that points to some resource is > well within the bounds of the draft. > > > > So maybe the draft is okay as is? > > > > Or perhaps that's too much to be left as an exerciser to the reader? And > some text should be added and/or adjusted so the resource-indicators draft > would be a little more open/clear about the parameter value potentially > being more of a logical or abstract identifier and not necessarily a > network addressable URL? > > > > > > > > On Fri, Jan 18, 2019 at 1:18 PM Rifaat Shekh-Yusef <rifaat.i...@gmail.com> > wrote: > > I wouldn't worry too much about the process. > > If it makes sense to update the document, then feel free to do that. > > > > Regards, > > Rifaat > > > > > > On Fri, Jan 18, 2019 at 3:08 PM John Bradley <ve7...@ve7jtb.com> wrote: > > Yes the logical resource can be provided by "scope" > > > > Some implementations like Ping and Auth0 have been adding another > parameter "aud" to identify the logical resource and then using scopes to > define permissions to the resource. > > > > Fortunately, we are using a different parameter name so not stepping on > that.. > > > > We could go back and try to add text explaining the difference, but we are > quite late in the process. > > > > I agree that a logical resource parameter may be helpful, but perhaps it > should be a separate draft. > > > > John B. > > > > On Fri, Jan 18, 2019 at 4:38 PM Richard Backman, Annabelle < > richa...@amazon.com> wrote: > > Doesn’t the “scope” parameter already provide a means of specifying a > logical identifier? > > > > -- > > Annabelle Richard Backman > > AWS Identity > > > > > > *From: *OAuth <oauth-boun...@ietf.org> on behalf of Vittorio Bertocci > <Vittorio=40auth0....@dmarc.ietf.org <40auth0.....@dmarc.ietf.org>> > *Date: *Friday, January 18, 2019 at 5:47 AM > *To: *John Bradley <ve7...@ve7jtb.com> > *Cc: *IETF oauth WG <oauth@ietf.org> > *Subject: *Re: [OAUTH-WG] Shepherd write-up for > draft-ietf-oauth-resource-indicators-01 > > > > Thanks John for the background. > > I agree that from the client validation PoV, having an identifier > corresponding to a location makes things more solid. > > That said: the use of logical identifiers is widespread, as it has > significant practical advantages (think of services that assign generated > hosting URLs only at deployment time, or services that are somehow grouped > under the same logical audience across regions/environment/deployments). > People won't stop using logical identifiers, because they often have no > alternative (generating new audiences on the fly at the AS every time you > do a deployment and get assigned a new URL can be unfeasible). Leaving a > widely used approach as exercise to the reader seems a disservice to the > community, given that this might lead to vendors (for example Microsoft and > Auth0) keeping their own proprietary parameters, or developers misusing the > ones in place; would make it hard for SDK developers to provide libraries > that work out of the box with different ASes; and so on. > > Would it be feasible to add such parameter directly in this spec? That > would eliminate the interop issues, and also gives us a chance to fully > warn people about the security shortcomings of choosing that approach. > > > > > > > > On Thu, Jan 17, 2019 at 4:32 PM John Bradley <ve7...@ve7jtb.com> wrote: > > We have discussed this. > > Audiences can certainly be logical identifiers. > > This however is a more specific location. The AS is free to map the > location into some abstract audience in the AT. > > From a security point of view once the client starts asking for logical > resources it can be tricked into asking for the wrong one as a bad resource > can always lie about what logical resource it is. > > If we were to change it, how a client would validate it becomes > challenging to impossible. > > The AS is free to do whatever mapping of locations to identifiers it needs > for access tokens. > > Some implementations may want to keep additional parameters like logical > audience, but that should be separate from resource. > > John B. > > On 1/17/2019 9:56 AM, Rifaat Shekh-Yusef wrote: > > Hi Vittorio, > > > > The text you quoted is copied form the abstract of the draft itself. > > > > > > *Authors,* > > > > Should the draft be updated to cover the logical identifier case? > > > > Regards, > > Rifaat > > > > > > On Thu, Jan 17, 2019 at 8:19 AM Vittorio Bertocci <vitto...@auth0.com> > wrote: > > Hi Rifaat, > > one detail. The tech summary says > > > > An extension to the OAuth 2.0 Authorization Framework defining request > > parameters that enable a client to explicitly signal to an authorization > server > > about the *location* of the protected resource(s) to which it is requesting > > access. > > But at least in the Microsoft implementation, the resource identifier > doesn't *have* to be a network addressable URL (and if it is, it doesn't > strictly need to match the actual resource location). It can be a logical > identifier, tho using the actual resource location there has benefits > (domain ownership check, prevention of token forwarding etc). > > Same for Auth0, the audience parameter is a logical identifier rather than > a location. > > > > > > > > On Wed, Jan 16, 2019 at 6:32 PM Rifaat Shekh-Yusef <rifaat.i...@gmail.com> > wrote: > > All, > > > > The following is the first shepherd write-up for > the draft-ietf-oauth-resource-indicators-01 document. > > > https://datatracker.ietf.org/doc/draft-ietf-oauth-resource-indicators/shepherdwriteup/ > > > > Please, take a look and let me know if I missed anything. > > > > Regards, > > Rifaat > > > > _______________________________________________ > OAuth mailing list > OAuth@ietf.org > https://www.ietf.org/mailman/listinfo/oauth > > > > _______________________________________________ > > OAuth mailing list > > OAuth@ietf.org > > https://www.ietf..org/mailman/listinfo/oauth > <https://www.ietf.org/mailman/listinfo/oauth> > > _______________________________________________ > OAuth mailing list > OAuth@ietf.org > https://www.ietf.org/mailman/listinfo/oauth > > _______________________________________________ > OAuth mailing list > OAuth@ietf.org > https://www.ietf.org/mailman/listinfo/oauth > > _______________________________________________ > OAuth mailing list > OAuth@ietf.org > https://www.ietf.org/mailman/listinfo/oauth > > > *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.* > > > *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 > > > *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 > > > > _______________________________________________ > > OAuth mailing list > > OAuth@ietf.org > > https://www.ietf.org/mailman/listinfo/oauth > > _______________________________________________ > OAuth mailing list > OAuth@ietf.org > https://www.ietf.org/mailman/listinfo/oauth >
_______________________________________________ OAuth mailing list OAuth@ietf.org https://www.ietf.org/mailman/listinfo/oauth