Hi Vittorio,

> On 4. Apr 2019, at 19:19, Vittorio Bertocci 
> <Vittorio=40auth0....@dmarc.ietf.org> wrote:
> 
> But before I get in the details, let me make an uber-point..
> I am acutely aware of the potential for confusion and abuse in the context of 
> OAuth and sign in, the article you pointed to quotes my own articles on the 
> matter extensively. But there are concrete aspects that need to be considered 
> about what developers are trying to achieve in practice.
> OAuth2 is the de facto mechanism to secure API calls nowadays. That includes 
> scenarios not directly addressed by the spec, such as first party APIs. 
> People do that for 1st party APIs as well because they can leverage a well 
> supported mechanism for driving authentication experiences and outsource 
> authentication to products and services.
> Forgetting for a second about the fact that 3rd party APIs can use identity 
> and authentication levels info as well, let me focus for a second on 1st 
> party APIs. From the functionality perspective, delivering an app as a web 
> site or as a native client+API combination doesn't change the business 
> requirements and the information a backend needs to do its job.
> Given that we tell people NOT to use ID tokens for calling APIs: if a 
> developer chooses to deliver their app as a native client+API instead of a 
> web site, the only artifact they have available is the access token. So 
> either we embed the info in the access token, and we do what we can to 
> prevent abuse and the most likely pitfalls/privacy challenges/etc in the 
> guidance, or we find a way for 1st party APIs to consume ID tokens (which is 
> problematic- I discussed this with John and Nat at OSW and the place we got 
> stuck on was that we can; safely use sender constrain in that scenario).
> And to pre-empt comments on userinfo, that's asking for a lot of extra moving 
> parts- the only outcome will be that people will keep embedding the info they 
> need in the AT, but will do so in non-interoperable way, and without the 
> guidance and warnings that would at least contain some of the damage.

Userinfo is OIDC. Do you mean rfc7662?
So you say that the use of a token introspection endpoint like rfc7662 is not 
always viable, right?
I kind of agree that you might want to have this information in the token, if 
possible. You can save a lot of round trips over time (at the expense of 
revocation).
But then, we should simply take that (rfc7662) as a boilerplate for the JWT, 
not OIDC.
An introspection response also contains scopes, username and optional 
additional claims (e.g. OIDC / authN specific claims).
I think an access token JWT should not convey more / other information than a 
token introspection endpoint.

BR

> 
> That said, inline.
> 
> My concern isn't with reusing the names/types of the claims per se.  But more 
> generally that codifying the use of certain authentication-centric claims in 
> the context of an access token furthers the potential confusion around 
> authentication vs. authorization that has been a nagging problem for OAuth 
> (i.e. the https://oauth.net/articles/authentication/ article).
> see preamble.
> 
> I  understand what you are saying but but personally do not find it 
> sufficiently compelling.  But that's just my opinion and not a hill I want to 
> die on (at the present time anyway)..
> Noted :) does the fact that in some scenarios the AT might be the *only* 
> artifact a backend will receive change the stance?
> 
>  By the time it came up again near the end of the last unconference session, 
> I wasn't wanting to prolong things because I was kinda worn out for the day 
> and wanting to get to Frankfurt that evening before sunset ('cause I like to 
> do stuff like this: https://flic.kr/p/2fiAaPe :) ).
> Sorry for having tired you out :) at the time I echoed back what was 
> suggested (to reflect the original values in the session) precisely to make 
> sure everyone had a chance to push back, and I got lots of nods (including 
> from John who was in the first row). I misinterpreted your silence as assent, 
> given that during that session you did chime in on other matters.. but I was 
> expecting the discussion to keep going on the ML anyway, so it's all 
> according to plan :)
> 
>  FWIW, to me, George's suggestion "assume[ing] that the auth_time value 
> should be updated to the latest time at which the user authenticated" though 
> some unspecified and in many cases non-existent link between the AT and a 
> current user session at the AS is an example of how authentication-centric 
> claims in an access token can be confusing.
>  I agree it can be confusing, but to me that makes the need to provide 
> guidance on it more compelling, not less. There are important scenarios where 
> access decisions are made on the basis of that information, and 
> implementations WILL find a way to get the info they are interested into. To 
> me that's all the more reasons to provide guidance on how to do so being 
> aware of pitfalls and with whatever protections we can put in place, as 
> opposed to leave developers to their own device.
> 
> On Thu, Apr 4, 2019 at 9:32 AM Brian Campbell 
> <bcampbell=40pingidentity....@dmarc.ietf.org> wrote:
> A few remarks/responses inline below this time...
> 
> On Wed, Apr 3, 2019 at 1:38 PM Vittorio Bertocci 
> <Vittorio=40auth0....@dmarc.ietf.org> wrote:
> Thanks guys for the comment, sorry for the delay in addressing them.
> I am not married to the claim types used in here, so if you think that 
> reusing the ones in the id_token can cause confusion we should expand on the 
> specific ways in which you think might go south.
> 
> My concern isn't with reusing the names/types of the claims per se.  But more 
> generally that codifying the use of certain authentication-centric claims in 
> the context of an access token furthers the potential confusion around 
> authentication vs. authorization that has been a nagging problem for OAuth 
> (i.e. the https://oauth.net/articles/authentication/ article).
> 
> 
> However I think it's important that the information on say, whether the 
> current token was obtained using MFA or a specific authentication factor is 
> something that API developers can legitimately latch to when doing 
> authorization decisions. From the perspective of a developer modeling a 
> solution, whether functionality is delivered as a route in a postback based 
> web app (hence receiving an id_token or derived) or as an API consumed by a 
> native app, the business requirement gating access to that functionality 
> doesn't change. If the admin managing that resource establishes that access 
> should be performed only via MFA, the developer should be equipped to enforce 
> that regardless of the stack used to expose functionality (web app, API).
> Although it is true that triggering the desired behavior might be achieved by 
> the resource setting and contract with the AS, along the lines of what David 
> said, it's actually not uncommon for those policies to be assigned on the 
> resource AFTER the current session was established and/or the corresponding 
> AT was obtained and cached. Furthermore, the requirement might be more 
> granular than an AS policy can tolerate (an API might requires MFA only for 
> certain routes, hence hard to express in a static policy) and triggered in 
> form of challenges. So the situation in which you have an AT with the right 
> issuer, audience, etc but was obtained with a policy now 
> obsolete/unacceptable to the RP is strong. Requesting to support revocation 
> just for this seems overkill, especially given that the scenario in which the 
> same logical app is exposed as both web app and native client+API, the code 
> consuming those claims is already in place. It just makes intuitive sense for 
> developers.
> In summary, one can take steps to push as much of the MFA requirements to the 
> AS settings for a particular request, but ultimately the desire of the API 
> developer to enforce that it actually happened is a requirement I encountered 
> often in practice. Anything providing extra context to refine decisions about 
> it (like auth_time, which might inform decisions about whether to accept an 
> MFA check occurred N minutes ago or refuse access).
> 
> I understand what you are saying but but personally do not find it 
> sufficiently compelling.  But that's just my opinion and not a hill I want to 
> die on (at the present time anyway)..
> 
> 
> 
> I thought that reusing the existing names for the same concepts just made 
> sense (dev existing skills, existing codebases, etc etc) and especially in 
> the case in which the values are exactly the same, and the idea seemed to 
> receive good support during OSW.
> 
> Our recollection of OSW differs somewhat. As I recall there was support for 
> pointing to identity claims from OIDC for additional end-user info. But there 
> was some grumbling (from John and myself at least) at first mention of 
> acr/amr and auth_time. By the time it came up again near the end of the last 
> unconference session, I wasn't wanting to prolong things because I was kinda 
> worn out for the day and wanting to get to Frankfurt that evening before 
> sunset ('cause I like to do stuff like this: https://flic.kr/p/2fiAaPe :) ).
> 
> 
> But I am completely open to change it of course, especially for cases like 
> the one identified by George.
> 
> FWIW, to me, George's suggestion "assume[ing] that the auth_time value should 
> be updated to the latest time at which the user authenticated" though some 
> unspecified and in many cases non-existent link between the AT and a current 
> user session at the AS is an example of how authentication-centric claims in 
> an access token can be confusing.
> 
> 
> 
> WDYT?
> 
> On Wed, Apr 3, 2019 at 10:24 AM Brian Campbell 
> <bcampbell=40pingidentity....@dmarc.ietf.org> wrote:
> +1 to David's question here. I'd like to see justifying use cases (beyond 
> just the fact that some people are already doing it) for auth_time, acr, and 
> amr to be available in OAuth JWT access tokens.. Those claims are defined 
> for, and in the context of, an ID Token and I fear that codifying their use 
> in an access token will lead to misuse and/or confusion.
> 
> On Mon, Apr 1, 2019 at 1:03 PM David Waite <da...@alkaline-solutions.com> 
> wrote:
> Do we know if there is a justifying use case for auth_time, acr, and amr to 
> be available in OAuth JWT access tokens? These are meant to be messages about 
> the client, either directly (in the case of client credentials) or about its 
> delegated authorization of the user.
> 
> Embedding attributes about the user (such as group membership and roles) can 
> be used for the resource to make finer-grained decisions than scopes, but 
> normally I would expect say acr limitations enforced by a resource to instead 
> be controlled by the AS requiring a higher quality authentication to release 
> certain scopes.
> 
> Thats of course not to say extensions to OAuth such as OIDC can’t provide 
> these values, just that they might better be defined by those extensions.
> 
> -DW
> 
>> On Apr 1, 2019, at 9:12 AM, George Fletcher 
>> <gffletch=40aol....@dmarc.ietf.org> wrote:
>> 
>> Thanks for writing this up. One comment on auth_time...
>> 
>>    auth_time  OPTIONAL - as defined in section 2 of [OpenID.Core
>> ].
>>       Important: as this claim represents the time at which the end user
>>       authenticated, its value will remain the same for all the JWT
>>       access tokens issued within that session.  For example: all the
>>       JWT access tokens obtained with a given refresh token will all
>>       have the same value of auth_time, corresponding to the instant in
>>       which the user first authenticated to obtain the refresh token.
>> 
>> 
>> During a current session a user can be challenged for additional credentials 
>> or required to re-authenticate due to a number of different reasons. For 
>> example, OIDC prompt=login or max_age=NNN. In this context, I'd assume that 
>> the auth_time value should be updated to the latest time at which the user 
>> authenticated.
>> 
>> If we need a timestamp for when the "session" started, then there could be a 
>> session_start_time claim.
>> 
>> Thanks,
>> George
>> 
>> On 3/24/19 7:29 PM, Vittorio Bertocci 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
> 
> 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


Martin Schanzenbach
Fraunhofer AISEC
Department Service & Application Security
Parkring 4, 85748 Garching near Munich (Germany)
Tel: +49 89 3229986-193
martin.schanzenb...@aisec.fraunhofer.de
GPG: 6665201EA9257CC68FDE77E884335131EA3DABF0

Attachment: signature.asc
Description: Message signed with OpenPGP

_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to