Re: [OAUTH-WG] Benjamin Kaduk's No Objection on draft-ietf-oauth-resource-indicators-05: (with COMMENT)
Benjamin Kaduk <kaduk@mit.edu> Wed, 04 September 2019 23:55 UTC
Return-Path: <kaduk@mit.edu>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 503B7120815; Wed, 4 Sep 2019 16:55:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.199
X-Spam-Level:
X-Spam-Status: No, score=-4.199 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Gy6OB1LF0K0D; Wed, 4 Sep 2019 16:55:38 -0700 (PDT)
Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 477BC12007A; Wed, 4 Sep 2019 16:55:38 -0700 (PDT)
Received: from kduck.mit.edu ([24.16.140.251]) (authenticated bits=56) (User authenticated as kaduk@ATHENA.MIT.EDU) by outgoing.mit.edu (8.14.7/8.12.4) with ESMTP id x84NtXbW019089 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 4 Sep 2019 19:55:35 -0400
Date: Wed, 04 Sep 2019 18:55:32 -0500
From: Benjamin Kaduk <kaduk@mit.edu>
To: Brian Campbell <bcampbell@pingidentity.com>
Cc: The IESG <iesg@ietf.org>, draft-ietf-oauth-resource-indicators@ietf.org, oauth <oauth@ietf.org>, oauth-chairs@ietf.org
Message-ID: <20190904235531.GE78802@kduck.mit.edu>
References: <156763159047.22689.9306520600745069059.idtracker@ietfa.amsl.com> <CA+k3eCTu91h3X7BjJgjQ6QQU1oWXnRPM3X0EjRbi6ri=a5tSew@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <CA+k3eCTu91h3X7BjJgjQ6QQU1oWXnRPM3X0EjRbi6ri=a5tSew@mail.gmail.com>
User-Agent: Mutt/1.10.1 (2018-07-13)
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/5aOVeC86E4ccOGgyHeGvEqOlPHU>
Subject: Re: [OAUTH-WG] Benjamin Kaduk's No Objection on draft-ietf-oauth-resource-indicators-05: (with COMMENT)
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>, <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth/>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 04 Sep 2019 23:55:41 -0000
On Wed, Sep 04, 2019 at 05:19:27PM -0600, Brian Campbell wrote: > Thanks Ben, for the review and non-objectional ballot. > > On Wed, Sep 4, 2019 at 3:13 PM Benjamin Kaduk via Datatracker < > noreply@ietf.org> wrote: > > > Benjamin Kaduk has entered the following ballot position for > > draft-ietf-oauth-resource-indicators-05: No Objection > > ---------------------------------------------------------------------- > > COMMENT: > > ---------------------------------------------------------------------- > > > > Abstract > > > > This seems to be a sentence fragment (maybe preface with "This document > > specifies"?). > > > > Hrm. Yeah, I suppose so. I guess I was trying to be efficient with the > words but to the point of not having a complete sentence. I'll add that > preface. > > > > > Section 2.1 > > > > For authorization requests sent as a JWTs, such as when using JWT > > Secured Authorization Request [I-D.ietf-oauth-jwsreq], a single > > "resource" parameter value is represented as a JSON string while > > multiple values are represented as an array of strings. > > > > jwsreq includes an example with "aud" in the request, yet this new > > "resource" request parameter is also intended to influence the audience > > of the resulting token. I'm not sure whether we need to say anything > > specifically about this in the document, but I'd like to have a better > > understanding of how "aud" and "resource" would interact when both > > present in the reqeust. > > (This is presumably related to why the request parameter is called > > "resource" and not "aud" or "audience", but unfortunately I seem to have > > zoned out for that part of the WG discussion.) > > > > In the context of a jwsreq request the "aud" indicates the intended > recipient/audience of the singed authorization request itself, which will > be the authorization server to whom the request is being made. This > prevents a singed request meant for AS1 from being used successfully at > AS2, for example. That "aud" does not do anything to influence the audience > of the resulting token - it's really just metadata of the signed request > that will be discarded once the singed request is validated. The "resource" > parameter of this document indicates where the client intends to use the > token its requesting, which can and will influence the audience of the > resulting token. So "aud" and "resource" do not interact when both present > in a signed authorization request. Ah, of course; thanks for the refresher, and that makes perfect sense. > And yes, this is related to why the request parameter is called "resource" > and not "aud" and also I think related to the outstanding discuss you have > on jwsreq. If this parameter were to have been called "aud" then there > would be a name collision when used in conjunction with jwsreq where "aud" > would have had two distinct and irreconcilable meanings at the same time. > There are a few other reasons the WG landed on "resource" as the name but > what you've alluded to up here was a big part of it. Agreed. > > > If the client omits the "resource" parameter when requesting > > authorization, the authorization server MAY process the request with > > no specific resource or by using a pre-defined default resource > > value. [...] > > > > Would/could this default value be global or on a per-scope basis or some > > other finer granularity than global? > > > > Yes, it could be any of those. Though I think most likely it'd be global or > influenced by scope. Really, it'd be whatever that AS was doing in the > absence of such a parameter before this document came along. Very true :) > > > > The > > authorization server might use this data to inform the user about the > > resources the client is going to access on her behalf, to meet policy > > decision (e.g. refuse the request due to unknown resources), and > > determine the set of resources that can be used in subsequent access > > token requests. > > > > nits: comma after "e.g.", and maybe s/meet policy decision/apply policy/ > > (or similar), and "to" before "determine" for parallelism. > > > > Okay, will do. > > > > > In Figure 1 we URL-encode the '.'s in "client.example.org" but not in > > "api.example.com" in the request URL; should we be consistent? (This > > seems to be recurring throughout the examples.) > > > > Shoot. I really do aim to be tighter with that kind of thing well before > getting to the IESG evaluation phase. I suspect some copy/paste/change work > along with not looking closely enough got the better of me here. I'll fix > to use not-encoded '.'s throughout. > > > > > Section 2.2 > > > > needs to know. This further improves privacy as scope values give an > > indication of what services the resource owner uses and downscoping a > > token to only that which is needed for a particular service can limit > > the extent to which such information is revealed across different > > services. As specified in Section 5.1 of [RFC6749], the > > > > (nit?) I suggest to s/scope values give an indication of what services > > the resource owner uses and/a list of scope values is an indication that > > the > > resource owner uses the multiple various services listed;/ since I > > misparsed it the first time as-is. > > > > Sure. Striving to avoid the ol' misparse is always good. > > > > > Section 3 > > > > An access token that is audience restricted to a protected resource > > that obtains that token legitimately cannot be used to access > > resources on behalf of the resource owner at other protected > > resources. The "resource" parameter enables a client to indicate the > > > > nit: This sentence has a pretty strange construction. I think the > > intent is to say that that a token, legitimately presented to a > > resource, cannot then be taken by that resource server and > > illegitimately present it somewhere else for access to other resources. > > But with the current wording we seem to be missing part of the part > > where some entity obtains the token with intent for illegitimate access. > > > > Yes, despite the pretty strange construction, you have the correct intent. > I'll work on improving that sentence (borrowing heavily from your words > there). > > > > > Some servers may host user content or be multi-tenant. In order to > > avoid attacks that might confuse a client into sending an access > > token to a resource that is user controlled or is owned by a > > different tenant, it is important to use a specific resource URI > > including a path component. This will cause any access token issued > > for accessing the user controlled resource to have an invalid > > audience if replayed against the legitimate resource API. > > > > I'm not entirely sure what this is trying to say. What is the > > "legitimate resource API"? Why would a token be issued for accessing a > > user-controlled resource if that's something we're trying to avoid > > having confused clients access? > > > > Um... so on rereading that I might say that it's also "pretty strange". > > What it was trying to somehow say is similar to the previous nit about > audience-restricted not being usable at the resource for whom the weren't > intended. But saying so in the context of a multi-tenant environment. > Basically it's trying to say that, in a multi-tenant environment, the > resource URI and subsequent token audience need to have something that > identifies the tenant so as to prevent the token from being used by one > tenant to illegitimately access resources at a different tenant. I'll work > on trying to improve that text to better explain all that. Ah, yes, that's a very good point to make. I'm happy to look at some draft text if you want. > > Although multiple occurrences of the "resource" parameter may be > > included in a request, using only a single "resource" parameter is > > encouraged. A bearer token that has multiple intended recipients > > (audiences) indicating that the token is valid at more than one > > protected resource can be used by any one of those protected > > resources to access any of the other protected resources. Thus, a > > high degree of trust between the involved parties is needed when > > using access tokens with multiple audiences. Furthermore an > > authorization server may be unwilling or unable to fulfill a token > > request with multiple resources. > > > > Do we want to contrast this with an authorization code/refresh token, > > which may be more likely to be issued with a multiple-resource/audience > > property? > > > > Yeah, it's perhaps worth making the distinction. Though I don't know that > it needs to be explicitly contrasted per se. I think just qualifying the > text above to more specifically say "... parameter may be included in a > token request" (as apposed to authorization request) would be enough to > indicate that the suggestion is only applicable to the access token and not > authorization code/refresh token. Sure; we don't need to overemphasize it. Thanks, Ben
- [OAUTH-WG] Benjamin Kaduk's No Objection on draft… Benjamin Kaduk via Datatracker
- Re: [OAUTH-WG] Benjamin Kaduk's No Objection on d… Brian Campbell
- Re: [OAUTH-WG] Benjamin Kaduk's No Objection on d… Benjamin Kaduk
- Re: [OAUTH-WG] Benjamin Kaduk's No Objection on d… Brian Campbell
- Re: [OAUTH-WG] Benjamin Kaduk's No Objection on d… Benjamin Kaduk
- Re: [OAUTH-WG] Benjamin Kaduk's No Objection on d… Brian Campbell