Hi Neil, you raised a very important issue but the Security BCP does not talk about JWT content like the Access Token JWT BCP.
I therefore think the security advise should go into the security considerations section of the Access Token JWT BCP. best regards, Torsten. > Am 07.05.2019 um 11:18 schrieb Neil Madden <neil.mad...@forgerock.com>: > > Is it too late to add the observation below to the OAuth security topics BCP > draft? > > >> Begin forwarded message: >> >> From: Neil Madden <neil.mad...@forgerock.com> >> Subject: Re: [OAUTH-WG] draft-bertocci-oauth-access-token-jwt-00 >> Date: 7 May 2019 at 09:37:29 BST >> To: Vittorio Bertocci <Vittorio=40auth0....@dmarc.ietf.org> >> Cc: Hans Zandbelt <hans.zandb...@zmartzone.eu>, Karl McGuinness >> <kmcguinn...@okta.com>, John Bradley <ve7...@ve7jtb.com>, IETF oauth WG >> <oauth@ietf.org> >> >> I wasn’t at IIW so I may be missing some context. >> >> There is a potential security issue if the client_id is used as the “sub” >> for an AT obtained via client_credentials. If the client can register itself >> with a self-chosen client_id then it may deliberately chose a client_id that >> matches the user name of a privileged user. An RS that just blindly looks at >> the “sub” claim may then erroneously let the client perform privileged >> actions. >> >> Is this the context of the discussion? >> >> Given that there are a lot of RSes in existence, many of which are probably >> just looking at the “sub” claim to identify the resource owner, I think the >> onus is on the AS to ensure that no such ambiguity can arise in the first >> place by ensuring that the space of “sub” values for client credentials is >> disjoint with the space for genuine users or by disallowing the >> client_credentials grant altogether. >> >> This issue already arises in token introspection though, so maybe ought to >> be mentioned in the OAuth security topics draft rather than specific to the >> JWT AT draft? >> >> — Neil >> >>> On 6 May 2019, at 18:32, Vittorio Bertocci >>> <Vittorio=40auth0....@dmarc..ietf.org> wrote: >>> >>> Hi all, >>> thanks for your patience during this month long hiatus, and thanks for the >>> comments. >>> Last week at IIW I had the opportunity to discuss this with many of the >>> people on the list. Here's a summary of where the discussion landaed on the >>> subject of the sub (pun intended). >>> >>> - It seems that RFC 7519 has pretty clear language on the use of sub- I >>> didn't check it back when we started the discussion. I do agree with the >>> people saying that we shouldn't violate existing specifications, hence it >>> looks like we do need to have sub also in the case in which we have >>> app-only tokens carrying claims about the app itself. I understand this >>> will cause some implementation to break, but unfortunately that's intrinsic >>> in the process of coming up with a common approach and standards compliance >>> is probably one of the strongest reasons to tolerate that. >>> - That said, I am strongly committed to preserve existing functionality. >>> One of the main reasons that was brought up for including sub only for user >>> based ATs was to use it as heuristic for telling those tokens apart from >>> app-only ones. To that end, Karl MCGuinness suggested that we include >>> grant_type as a return claim, which the RS could use to the same effect. I >>> find the proposal very clever, and the people at IIW thought so as well. >>> What you think? >>> Note, John Bradley observed that in some cases this might lead to ambiguous >>> results if an extension grant is used (say an assertion profile) but that >>> seems like a relatively fringe occurrence. >>> >>>> On Thu, Apr 4, 2019 at 1:11 PM Hans Zandbelt <hans.zandb...@zmartzone.eu> >>>> wrote: >>>> I also meant to say that (of course) the JWT standard doesn't say that the >>>> JWT is supposed to be about the client or about the resource owner, hence >>>> both are valid >>>> >>>> Hans. >>>> >>>>> On Thu, Apr 4, 2019 at 10:09 PM Mike Jones <michael.jo...@microsoft.com> >>>>> wrote: >>>>> I get that existing practice is likely to be all over the map, but if >>>>> we’re to create a JWT access token standard, it’s reasonable to require >>>>> that the claims usage comply with the JWT standards. >>>>> >>>>> >>>>> >>>>> -- Mike >>>>> >>>>> >>>>> >>>>> From: Hans Zandbelt <hans.zandb...@zmartzone.eu> >>>>> Sent: Thursday, April 4, 2019 12:59 PM >>>>> To: Mike Jones <michael.jo...@microsoft.com> >>>>> Cc: George Fletcher <gffletch=40aol....@dmarc.ietf.org>; Vittorio >>>>> Bertocci <Vittorio=40auth0....@dmarc.ietf.org>; IETF oauth WG >>>>> <oauth@ietf.org> >>>>> Subject: Re: [OAUTH-WG] draft-bertocci-oauth-access-token-jwt-00 >>>>> >>>>> >>>>> >>>>> the definition of RFC 7519 is actually "petitio principii" and a lot of >>>>> deployments put claims about the Resource Owner in the access token (as a >>>>> Resource Server implementer I've suffered a lot from this) >>>>> >>>>> >>>>> >>>>> Hans. >>>>> >>>>> >>>>> >>>>> On Thu, Apr 4, 2019 at 9:48 PM Mike Jones <michael.jo...@microsoft.com> >>>>> wrote: >>>>> >>>>> I agree with George that the subject of a token must be the principal of >>>>> that token. That what the JWT “sub” claim is for. Indeed, the first >>>>> sentence of the “sub” definition at >>>>> https://tools.ietf.org/html/rfc7519#section-4.1.2 is: >>>>> >>>>> The "sub" (subject) claim identifies the principal that is the subject of >>>>> the JWT. >>>>> >>>>> >>>>> >>>>> If an access token uses “sub”, its usage must comply with the definition >>>>> from RFC 7519. >>>>> >>>>> >>>>> >>>>> -- Mike >>>>> >>>>> >>>>> >>>>> From: OAuth <oauth-boun...@ietf.org> On Behalf Of George Fletcher >>>>> Sent: Thursday, April 4, 2019 8:51 AM >>>>> To: Hans Zandbelt <hans.zandb...@zmartzone.eu> >>>>> Cc: Vittorio Bertocci <Vittorio=40auth0....@dmarc.ietf.org>; IETF oauth >>>>> WG <oauth@ietf.org> >>>>> Subject: Re: [OAUTH-WG] draft-bertocci-oauth-access-token-jwt-00 >>>>> >>>>> >>>>> >>>>> The more I think about this the more I land in the "No" camp. >>>>> >>>>> The subject of a token should be the principal of that token. It >>>>> shouldn't matter whether that is a machine, a user, or a device. Trying >>>>> to separate out "humans" as a special class will just make things more >>>>> complicated. If we need a claim to identify the subject is a "human" then >>>>> why not just add that. This doesn't break anything and makes it easy for >>>>> people to detect this case in those use cases where it's required. >>>>> >>>>> Thanks, >>>>> George >>>>> >>>>> On 4/3/19 4:56 PM, Hans Zandbelt wrote: >>>>> >>>>> I will argue that in a way such deployments are already broken e.g. in >>>>> the typical use case of onboarding client accounts in the same >>>>> directory/OU/namespace as user accounts and we don't need to cater for >>>>> that. >>>>> >>>>> >>>>> >>>>> Hans. >>>>> >>>>> >>>>> >>>>> On Wed, Apr 3, 2019 at 10:48 PM George Fletcher <gffle...@aol.com> wrote: >>>>> >>>>> I agree that this will break a lot of existing flows... especially those >>>>> using any form of the client_credentials flow. In that sense I'm not >>>>> completely on board yet :) >>>>> >>>>> On 3/26/19 12:56 PM, Hans Zandbelt wrote: >>>>> >>>>> great summary! this will hurt quite a few existing m2m deployments but I >>>>> do like the rigidness of it all: it is very explicit, cannot >>>>> misinterpreted and thus prevents failure (which is really what Dominick >>>>> is after); I'm on board >>>>> >>>>> >>>>> >>>>> Hans. >>>>> >>>>> >>>>> >>>>> On Tue, Mar 26, 2019 at 5:49 PM Vittorio Bertocci >>>>> <Vittorio=40auth0....@dmarc.ietf.org> wrote: >>>>> >>>>> thank you Steinar and everyone else for the comments on this! >>>>> >>>>> To summarize the situation so far: Dominick, Steinar, Rob, David, Nov, >>>>> Bertrand recommend using sub only for users. Martin would like to have >>>>> the sub for app only flows as well. Hans is neutral. >>>>> >>>>> That does sound like the sub as user has more consensus, tho before >>>>> changing it I'd wait for the people currently at IETF104 to have more >>>>> time to comment as well. >>>>> >>>>> Clarification. If the goal is to be able to apply the logic "if there's a >>>>> sub, it's a user flow", we have to explicitly disallow (MUST NOT) the use >>>>> of sub when that's not the case. Are all OK with it? >>>>> >>>>> >>>>> >>>>> Dave, the suggestion of having explicit typing for app only vs user only >>>>> is interesting! For the purpose of putting together an interoperable >>>>> profile, tho, I would suggest we table it for v1 in the interest of >>>>> getting to something easy to adopt (hence with small delta vs existing >>>>> implementations) faster. >>>>> >>>>> >>>>> >>>>> On Tue, Mar 26, 2019 at 1:40 AM Steinar Noem <stei...@udelt.no> wrote: >>>>> >>>>> Hi Vittorio, we (the national federation-gateway for the health services >>>>> in norway - "HelseID") think his is a really valuable initiative! >>>>> >>>>> We also agree with Dominick concerning definition of the "sub" claim. >>>>> >>>>> >>>>> >>>>> <mvh>Steinar</mvh> >>>>> >>>>> >>>>> >>>>> tir. 26. mar. 2019 kl. 07:25 skrev Dominick Baier >>>>> <dba...@leastprivilege.com>: >>>>> >>>>> From an access token consumer (aka API) developer point of view, I prefer >>>>> this logic >>>>> >>>>> >>>>> >>>>> "If sub is present - client acts on behalf of a user, if not - not." >>>>> >>>>> >>>>> >>>>> Anything more complicated has a potential of going wrong. >>>>> >>>>> >>>>> >>>>> On 26. March 2019 at 01:34:53, Nov Matake (mat...@gmail.com) wrote: >>>>> >>>>> Hi Vittorio, >>>>> >>>>> >>>>> >>>>> Yeah, I’m concerning user & client ids collision. >>>>> >>>>> I haven’t seen such implementations, but user-select username as sub, or >>>>> incremental integer as sub & client_id will be easily collide. >>>>> >>>>> >>>>> >>>>> If you can enforce collision resistant IDs between user & client >>>>> instances, it’ll works fine. I feel its overkill though. >>>>> >>>>> >>>>> >>>>> Sent from my iPhone >>>>> >>>>> >>>>> On Mar 26, 2019, at 8:51, Vittorio Bertocci <vitto...@auth0.com> wrote: >>>>> >>>>> Hey Nov, Dominick, Hans- >>>>> >>>>> thanks for the comments. That was an area I was expecting to cause more >>>>> discussion, and I am glad we are having this opportunity to clarify. >>>>> >>>>> The current language in the draft traces the etymology of sub to OpenID >>>>> Connect core, hence Dominick observation is on point. However in the >>>>> description I express something in line with 7519, which was in fact my >>>>> intent. >>>>> >>>>> >>>>> >>>>> The idea was to provide an identifier of the calling subject that is >>>>> guaranteed to be present in all cases- this would allow an SDK developer >>>>> to use the same code for things like lookups and membership checks >>>>> regardless of the nature of the caller (user in a delegated case, app in >>>>> app-only grants).. The information to discriminate between user and app >>>>> callers is always available in the token (say, the caller is a user if >>>>> sub!=client_id, where client_id is always guaranteed to be present as >>>>> well) hence there's no loss in expressive power, should that difference >>>>> be relevant for the resource server. >>>>> >>>>> >>>>> >>>>> Dominick, Hans- I probably missed the security issue you guys are >>>>> thinking of in this case. Of course, if this would introduce a risk I >>>>> completely agree it should be changed- I'd just like to understand better >>>>> the problem. Could you expand it in a scenario/use case to clarify the >>>>> risk? >>>>> >>>>> Nov- playing this back: is the concern that a user and a client might >>>>> have the same identifier within an IDP? When using collision resistant >>>>> IDs, as it is usually the case, that seems to be a remote possibility- >>>>> did you stumble in such scenario in production? >>>>> >>>>> >>>>> >>>>> Thanks >>>>> >>>>> V. >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> On Mon, Mar 25, 2019 at 7:44 AM Hans Zandbelt >>>>> <hans.zandb...@zmartzone..eu> wrote: >>>>> >>>>> I believe there are plenty of OAuth 2.0 only use cases out there... but >>>>> nevertheless I agree with the potential confusion and thus security >>>>> problems arising from that (though one may argue the semantics are the >>>>> same). >>>>> >>>>> >>>>> >>>>> Hans. >>>>> >>>>> >>>>> >>>>> On Mon, Mar 25, 2019 at 3:39 PM Dominick Baier >>>>> <dba...@leastprivilege.com> wrote: >>>>> >>>>> Yes I know - and I think in hindsight it was a mistake to use the same >>>>> claim type for multiple semantics. >>>>> >>>>> >>>>> >>>>> All the “this is OIDC not OAuth” arguments are making things more >>>>> complicated than they need to be - in my experience almost no-one (that I >>>>> know) does OIDC only - nor OAuth only. They always combine it. >>>>> >>>>> >>>>> >>>>> In reality this leads to potential security problems - this spec has the >>>>> potential to rectify the situation. >>>>> >>>>> >>>>> >>>>> Dominick >>>>> >>>>> On 25. March 2019 at 14:58:56, Hans Zandbelt (hans.zandb...@zmartzone.eu) >>>>> wrote: >>>>> >>>>> Without agreeing or disagreeing: OIDC does not apply here since it is not >>>>> OAuth and an access token is not an id_token. >>>>> >>>>> The JWT spec says in https://tools.ietf.org/html/rfc7519#section-4.1.2: >>>>> >>>>> >>>>> >>>>> "The "sub" (subject) claim identifies the principal that is the >>>>> >>>>> subject of the JWT. The claims in a JWT are normally statements >>>>> >>>>> about the subject. The subject value MUST either be scoped to be >>>>> >>>>> locally unique in the context of the issuer or be globally unique. >>>>> >>>>> The processing of this claim is generally application specific" >>>>> >>>>> >>>>> >>>>> which kind of spells "client" in case of the client credentials grant but >>>>> I also do worry about Resource Servers thinking/acting only in terms of >>>>> users >>>>> >>>>> >>>>> >>>>> Hans. >>>>> >>>>> >>>>> >>>>> On Mon, Mar 25, 2019 at 2:41 PM Dominick Baier >>>>> <dba...@leastprivilege.com> wrote: >>>>> >>>>> IMHO the sub claim should always refer to the user - and nothing else. >>>>> >>>>> >>>>> >>>>> OIDC says: >>>>> >>>>> >>>>> >>>>> "Subject - Identifier for the End-User at the Issuer." >>>>> >>>>> >>>>> >>>>> client_id should be used to identify clients. >>>>> >>>>> >>>>> >>>>> cheers >>>>> >>>>> Dominick >>>>> >>>>> >>>>> >>>>> On 25.. March 2019 at 05:13:03, Nov Matake (mat...@gmail.com) wrote: >>>>> >>>>> Hi Vittorio, >>>>> >>>>> >>>>> >>>>> Thanks for the good starting point of standardizing JWT-ized AT. >>>>> >>>>> >>>>> >>>>> One feedback. >>>>> >>>>> The “sub” claim can include 2 types of identifier, end-user and client, >>>>> in this spec. >>>>> >>>>> It requires those 2 types of identifiers to be unique each other in the >>>>> IdP context. >>>>> >>>>> >>>>> >>>>> I prefer omitting “sub” claim in 2-legged context, so that no such >>>>> constraint needed. >>>>> >>>>> >>>>> >>>>> thanks >>>>> >>>>> >>>>> >>>>> nov >>>>> >>>>> >>>>> >>>>> On Mar 25, 2019, at 8:29, Vittorio Bertocci >>>>> <vittorio.bertocci=40auth0....@dmarc.ietf.org> wrote: >>>>> >>>>> >>>>> >>>>> Dear all, >>>>> >>>>> I just submitted a draft describing a JWT profile for OAuth 2.0 access >>>>> tokens. You can find it in >>>>> https://datatracker.ietf.org/doc/draft-bertocci-oauth-access-token-jwt/. >>>>> >>>>> I have a slot to discuss this tomorrow at IETF 104 (I'll be presenting >>>>> remotely). I look forward for your comments! >>>>> >>>>> >>>>> >>>>> Here's just a bit of backstory, in case you are interested in how this >>>>> doc came to be. The trajectory it followed is somewhat unusual. >>>>> >>>>> Despite OAuth2 not requiring any specific format for ATs, through the >>>>> years I have come across multiple proprietary solution using JWT for >>>>> their access token. The intent and scenarios addressed by those solutions >>>>> are mostly the same across vendors, but the syntax and interpretations in >>>>> the implementations are different enough to prevent developers from >>>>> reusing code and skills when moving from product to product. >>>>> I asked several individuals from key products and services to share with >>>>> me concrete examples of their JWT access tokens (THANK YOU Dominick Baier >>>>> (IdentityServer), Brian Campbell (PingIdentity), Daniel Dobalian >>>>> (Microsoft), Karl Guinness (Okta) for the tokens and explanations!). >>>>> I studied and compared all those instances, identifying commonalities and >>>>> differences. >>>>> I put together a presentation summarizing my findings and suggesting a >>>>> rough interoperable profile (slides: >>>>> https://sec.uni-stuttgart.de/_media/events/osw2019/slides/bertocci_-_a_jwt_profile_for_ats.pptx >>>>> ) - got early feedback from Filip Skokan on it. Thx Filip! >>>>> The presentation was followed up by 1.5 hours of unconference discussion, >>>>> which was incredibly valuable to get tight-loop feedback and incorporate >>>>> new ideas. John Bradley, Brian Campbell Vladimir Dzhuvinov, Torsten >>>>> Lodderstedt, Nat Sakimura, Hannes Tschofenig were all there and >>>>> contributed generously to the discussion. Thank you!!! >>>>> Note: if you were at OSW2019, participated in the discussion and didn't >>>>> get credited in the draft, my apologies: please send me a note and I'll >>>>> make things right at the next update. >>>>> On my flight back I did my best to incorporate all the ideas and feedback >>>>> in a draft, which will be discussed at IETF104 tomorrow. Rifaat, Hannes >>>>> and above all Brian were all super helpful in negotiating the mysterious >>>>> syntax of the RFC format and submission process. >>>>> I was blown away by the availability, involvement and willingness to >>>>> invest time to get things right that everyone demonstrated in the >>>>> process. This is an amazing community. >>>>> >>>>> V. >>>>> >>>>> _______________________________________________ >>>>> 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 >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> hans.zandb...@zmartzone.eu >>>>> >>>>> ZmartZone IAM - www.zmartzone.eu >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> hans.zandb...@zmartzone.eu >>>>> >>>>> ZmartZone IAM - www.zmartzone.eu >>>>> >>>>> _______________________________________________ >>>>> OAuth mailing list >>>>> OAuth@ietf.org >>>>> https://www.ietf.org/mailman/listinfo/oauth >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> Vennlig hilsen >>>>> >>>>> >>>>> >>>>> Steinar Noem >>>>> >>>>> Partner Udelt AS >>>>> >>>>> Systemutvikler >>>>> >>>>> >>>>> >>>>> | stei...@udelt.no | h...@udelt.no | +47 955 21 620 | www.udelt.no | >>>>> >>>>> _______________________________________________ >>>>> OAuth mailing list >>>>> OAuth@ietf.org >>>>> https://www.ietf.org/mailman/listinfo/oauth >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> hans.zandb...@zmartzone.eu >>>>> >>>>> ZmartZone IAM - www.zmartzone.eu >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> OAuth mailing list >>>>> OAuth@ietf.org >>>>> https://www.ietf.org/mailman/listinfo/oauth >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> hans.zandb...@zmartzone.eu >>>>> >>>>> ZmartZone IAM - www.zmartzone.eu >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> hans.zandb...@zmartzone.eu >>>>> >>>>> ZmartZone IAM - www.zmartzone.eu >>>>> >>>> >>>> >>>> -- >>>> hans.zandb...@zmartzone.eu >>>> ZmartZone IAM - www.zmartzone.eu >>> _______________________________________________ >>> OAuth mailing list >>> OAuth@ietf.org >>> https://www.ietf.org/mailman/listinfo/oauth >> >
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ OAuth mailing list OAuth@ietf.org https://www.ietf.org/mailman/listinfo/oauth