Nick,

As Dick indicated below, get a slide deck ready with your ideas, and Hannes
and I will make sure to allocate some time during one the OAuth WG sessions
to discuss this.

Regards,
 Rifaat


On Sat, Feb 1, 2025 at 6:11 AM Dick Hardt <dick.ha...@gmail.com> wrote:

> Hey Nick, note that 2.1 does not introduce the mandate, it is in the OAuth
> Security BCP.
>
> While I agree that a refresh token expiry is handy, an AS can expire both
> a refresh token and an access token at any time. It is only an upper bound,
> just like the access token expiry.
>
> If you will be at IETF 122, you could just create some slides explaining
> each of your proposals, and use that as a basis for gathering interest from
> the WG to work on the proposals. As to drafting a spec, I have confidence
> you would be fine!
>
> /Dick
>
> On Sat, Feb 1, 2025 at 12:33 AM Nick Watson <nwat...@google.com> wrote:
>
>> Thanks for the context, Dick. Given that, I agree that the majority of my
>> suggestions aren't in scope for 2.1. I do think that
>> refresh_token_expires_in is worthy of continued discussion for 2.1,
>> however, given that 2.1 introduces a mandate for either RT rotation or
>> binding for public clients. refresh_token_expires_in can be directly
>> related to rotation. However, I can continue that discussion on the github
>> thread
>> <https://github.com/oauth-wg/oauth-v2-1/issues/187#issuecomment-2350781735>
>> that Warren linked.
>>
>> Rifaat: I will be attending IETF 122 in person, and I would definitely be
>> interested in a session on possible inclusions for a hypothetical 2.2 spec
>> or standalone extensions. Given that I have no prior experience writing
>> specs, I'm not sure I'd be able to draft something presentable.
>>
>> Nick
>>
>> On Thu, Jan 30, 2025 at 8:19 AM Rifaat Shekh-Yusef <
>> rifaat.s.i...@gmail.com> wrote:
>>
>>> Hi Nick,
>>>
>>> +1 to what Dick stated below.
>>>
>>> The best way forward is for you to write a draft, present and discuss it
>>> during one of the coming IETF meetings.
>>> The next meeting is IETF122 in Bangkok; if you cannot attend in person,
>>> you can present remotely.
>>> https://www.ietf.org/meeting/122/
>>>
>>> Regards,
>>>  Rifaat
>>>
>>>
>>> On Thu, Jan 30, 2025 at 11:08 AM Dick Hardt <dick.ha...@gmail.com>
>>> wrote:
>>>
>>>> Nick: Thanks for providing your feedback. This is the perfect medium
>>>> for discussions on IETF standards.
>>>>
>>>> A condition in the working group in agreeing to work on OAuth 2.1 was
>>>> that it did not introduce anything new -- it was to capture and condense
>>>> the collection of published OAuth 2.0 related documents so that
>>>> implementers had a single core reference that did not have outdated
>>>> information.
>>>>
>>>> Given that, we won't be able to include them in OAuth 2.1. While the
>>>> suggestion to file the issues on GitHub by Warren is well intended -- we
>>>> are only working on improving the draft language to provide better clarity
>>>> -- not on normative changes that are not already specified
>>>>
>>>> I'm sure that your suggestions are reasonable and are based on your
>>>> operating experience and are worthy of discussion.
>>>>
>>>> I'm not sure what the best path forward is for your suggestions --
>>>> typically it would be a draft that would provide normative language, and
>>>> the additional codes would be added to the appropriate IANA registries,
>>>> which are referenced in OAuth 2.1
>>>>
>>>> /Dick
>>>>
>>>>
>>>>
>>>> On Thu, Jan 30, 2025 at 10:39 AM Warren Parad <wparad=
>>>> 40rhosys...@dmarc.ietf.org> wrote:
>>>>
>>>>> Rather than trying to hash each of these out here over email, which is
>>>>> a poor mechanism for it, I would recommend commenting on the github repo
>>>>> with exactly the problem, eg "the user story" that encourages the need for
>>>>> having each of these. However I would caution right now the stories you 
>>>>> are
>>>>> providing aren't strong. Additionally this is 2.1 no OAuth 3.0, it's
>>>>> semantic for a reason, the focus is on security improvements. So I might
>>>>> recommend, out of the ones you've provided, focusing on only the top one 
>>>>> or
>>>>> two most critically important for you in your current situation that have
>>>>> real security implications or currently impossibly challenging problems 
>>>>> for
>>>>> RS/Users/Clients <https://rs.corp.google.com/Users/Clients>.
>>>>>
>>>>> Just as a for example:
>>>>>
>>>>>> but it allows them to optimize the experience in the happy path
>>>>>> (token expires when stated).
>>>>>
>>>>>
>>>>> So what? Why does it matter? "better optimize" How exactly? What's the
>>>>> alternative? If Google and Microsoft want to expose potential privacy data
>>>>> for unauthenticated users, they definitely can, but I will personally die
>>>>> on this hill. Until the user is authenticated, exposing any data regarding
>>>>> the user could not be more wrong. If AS still want to do it, nothing is
>>>>> stopping them, but we shouldn't add nonsense to a standard that will cause
>>>>> people who follow it to be­—more confused and less secure.
>>>>>
>>>>> Concrete examples go a long way to fruitful discussion otherwise the
>>>>> discussion is only academic and lacks any real impact.
>>>>>
>>>>> On Thu, Jan 30, 2025 at 12:32 AM Nick Watson <nwatson=
>>>>> 40google....@dmarc.ietf.org> wrote:
>>>>>
>>>>>> For refresh_token_expires_in, the argument seems to hinge on the idea
>>>>>> that "client can't do anything useful with the knowledge of the refresh
>>>>>> token expiration time". But that isn't the case, as we have received
>>>>>> several requests from clients to expose this information so that the 
>>>>>> client
>>>>>> can remind the user to do a renewal/reconsent ahead of time to prevent
>>>>>> disruption of service. It's not to say that the client is off the hook 
>>>>>> from
>>>>>> handling expired tokens, but it allows them to optimize the experience in
>>>>>> the happy path (token expires when stated).
>>>>>>
>>>>>> For 3.2.4 access_denied, yes it would be a 403 for AS-initiated
>>>>>> denials, but there's no corresponding spec-defined error code for it. 
>>>>>> Given
>>>>>> that access_denied is already defined for authorization response for AS 
>>>>>> or
>>>>>> user denials, it provides parity with that.
>>>>>>
>>>>>> For 3.2.4 additional error code, the only thing I had in mind is that
>>>>>> some RPs pop something up to the user asking them to reconsider granting
>>>>>> access, if denied. An AS-initiated error signal would indicate that
>>>>>> wouldn't help. I don't feel that strongly about this one, though. Curious
>>>>>> to hear if anyone else has use cases.
>>>>>>
>>>>>> display_uri - I had it in mind entirely for things that the user
>>>>>> should see and/or do, so the AS isn't conveying any instructions to the 
>>>>>> RP
>>>>>> beyond "please open this URL if possible so the user can see it". Reauth
>>>>>> and richer errors were the two things I thought of; other people may have
>>>>>> other use cases.  If we wanted to support a real recovery flow, then that
>>>>>> would certainly need more details for RP-AS communication.
>>>>>>
>>>>>> For scope in 4.1.2, I do think it's very useful to at least define
>>>>>> this parameter here, even if with MAY.  RPs could, for example, tell the
>>>>>> user which features will be disabled given their choices, and give them 
>>>>>> an
>>>>>> option to redo consent. (I don't think that's malicious or pleading.)  It
>>>>>> will also be useful during the transition phase from 2.0 to 2.1 for
>>>>>> authorization servers that still support the implicit flow for backwards
>>>>>> compatibility reasons.
>>>>>>
>>>>>> Nick
>>>>>>
>>>>>> On Wed, Jan 29, 2025 at 2:37 PM Warren Parad <wparad=
>>>>>> 40rhosys...@dmarc.ietf.org> wrote:
>>>>>>
>>>>>>> For the 3.2.3 Token Response, I believe it is quite clear why that
>>>>>>> should be rejected via this great response from Aaron:
>>>>>>> https://github.com/oauth-wg/oauth-v2-1/issues/187#issuecomment-2350781735
>>>>>>>
>>>>>>> For 3.2.4 access_denied, I believe the current solution is a 401 or
>>>>>>> 403 status code, isn't it? Adding error codes to that response is a bit
>>>>>>> unnecessary, I would say.
>>>>>>>
>>>>>>> For 3.2.4 additional error codes don't seem appropriate as the
>>>>>>> client can't do anything different; this just requires forcing them to
>>>>>>> explicitly handle each of these. Less error codes are better unless 
>>>>>>> there
>>>>>>> is a specific different flow we expect the client to go through. Do you
>>>>>>> believe there is a user relevant flow that would be different based on 
>>>>>>> the
>>>>>>> different error codes?
>>>>>>>
>>>>>>> I like the 3.2.4 display_uri concept, but it is rife with two
>>>>>>> problems in practice:
>>>>>>>
>>>>>>>    - The solution is usually for an owner of the client to do
>>>>>>>    something related to the AS, not the user who receives the error, so 
>>>>>>> it
>>>>>>>    doesn't do any good returning it, AND it is often exposing something 
>>>>>>> about
>>>>>>>    the flow to the user that shouldn't be exposed.
>>>>>>>    - The actual instructions that might need to be conveyed are
>>>>>>>    more complex than just a single parameter. Right now this 
>>>>>>> information would
>>>>>>>    be included in the error_description is valuable, I don't see 
>>>>>>> automation
>>>>>>>    being able to do anything clever if this was exposed differently, do 
>>>>>>> you?
>>>>>>>
>>>>>>> For the 4.1.2 The authorization response is just a *code* and not
>>>>>>> complete, focing authorization servers to unnecessarily look up this
>>>>>>> information doesn't make sense. It could be MAY at best for me. Did you
>>>>>>> mean to add this to the 3.2.3 Token Response, and it is already exactly
>>>>>>> defined like this:
>>>>>>>
>>>>>>> RECOMMENDED, if identical to the scope requested by the client;
>>>>>>>> otherwise, REQUIRED. The scope of the access token as described by 
>>>>>>>> Section
>>>>>>>> 1.4.1.
>>>>>>>
>>>>>>>
>>>>>>>  If you did intend for it to be added to the 4.1.2 I'm going to have
>>>>>>> to hard disagree, this is exposing information at a time before it is
>>>>>>> absolutely necessary. The Token doesn't exist before here, so there is
>>>>>>> nothing the client could do anyway. Is there a reason you would see
>>>>>>> absolutely needing to know this information before the auth_code flow is
>>>>>>> complete? Surely even if the user rejected some scopes, you still want 
>>>>>>> to
>>>>>>> complete the flow and capture the access_token and refresh_token that 
>>>>>>> the
>>>>>>> AS is going to generate, right? That feels like a better moment to 
>>>>>>> direct
>>>>>>> the user through some other flow. However even if we embrace the idea of
>>>>>>> returning the scopes on the redirect back in the authorization 
>>>>>>> response, I
>>>>>>> can't see what a client would do. The only thing they could attempt to 
>>>>>>> do
>>>>>>> is plead with the user to accept those scopes. That's a pretty malicious
>>>>>>> thing to do, the user already rejected those scopes, forcing them 
>>>>>>> through
>>>>>>> the exact same flow again is not something that makes sense, at least to
>>>>>>> me, but it isn't the case that this should be SHOULD let alone MUST.
>>>>>>>
>>>>>>> I hope each of my concerns are clear, but I'm happy to try to
>>>>>>> explain any of them in more detail.
>>>>>>>
>>>>>>> - Warren
>>>>>>>
>>>>>>> On Wed, Jan 29, 2025 at 11:13 PM Nick Watson <nwatson=
>>>>>>> 40google....@dmarc.ietf.org> wrote:
>>>>>>>
>>>>>>>> Hi all,
>>>>>>>>
>>>>>>>> I am new to IETF so apologies if I'm not doing this correctly. I
>>>>>>>> had a few suggestions for things to add to the 2.1 spec based on 
>>>>>>>> scenarios
>>>>>>>> encountered from running a large authorization server. Let me know your
>>>>>>>> thoughts or if I should be using a different channel (like github) to
>>>>>>>> contribute issues/suggestions.
>>>>>>>>
>>>>>>>> --
>>>>>>>>
>>>>>>>> In “3.2.3. Token Response”, I think it’s worth defining a refresh
>>>>>>>> token expiration parameter. This could be useful both for refresh token
>>>>>>>> rotation (as discussed in section 4.3.1.) as well as supporting user
>>>>>>>> selection of shorter-lived access.  A quick search suggests that 
>>>>>>>> there’s
>>>>>>>> some existing usage of refresh_token_expires_in as a parameter name
>>>>>>>> (Microsoft, GitHub).
>>>>>>>>
>>>>>>>> In “3.2.4. Error Response”, it would be worth adding access_denied
>>>>>>>> as a valid error code here for cases where the authorization server 
>>>>>>>> denies
>>>>>>>> the request. (For example, an enterprise user granted access in the 
>>>>>>>> past,
>>>>>>>> but their admin has since disabled the client or scope for their org.)
>>>>>>>>
>>>>>>>> In “3.2.4. Error Response” and “4.1.2.1. Error Response”, is it
>>>>>>>> worth adding another error code like 
>>>>>>>> access_denied_by_authorization_server
>>>>>>>> (bad name, I know) for cases where the authorization server feels it’s
>>>>>>>> useful and appropriate to distinguish between resource owner denial and
>>>>>>>> authorization server denial? This may not be needed as authorization
>>>>>>>> servers are already free to define their own error code extensions, 
>>>>>>>> but a
>>>>>>>> single umbrella error code could be useful for simpler implementations.
>>>>>>>>
>>>>>>>> In “3.2.4. Error Response” (and maybe also 5.3.1), it would be
>>>>>>>> useful to have some sort of “display_uri” parameter that the 
>>>>>>>> authorization
>>>>>>>> server can provide for RPs to open in a browser if they are able. This
>>>>>>>> display_uri could be used to show a richer error to the resource owner 
>>>>>>>> or
>>>>>>>> even be used for recovery (e.g. reauth). We could also try to spec out 
>>>>>>>> what
>>>>>>>> a full-blown token endpoint-initiated recovery flow might look like.
>>>>>>>>
>>>>>>>> In “4.1.2. Authorization Response”, I think we should say that the
>>>>>>>> authorization server MUST return a scope parameter if the RP included 
>>>>>>>> scope
>>>>>>>> in the request and the granted scopes differ from the requested scopes.
>>>>>>>> This allows RPs to be informed if the resource owner only grants 
>>>>>>>> partial
>>>>>>>> consent.
>>>>>>>>
>>>>>>>> - Nick Watson
>>>>>>>> _______________________________________________
>>>>>>>> OAuth mailing list -- oauth@ietf.org
>>>>>>>> To unsubscribe send an email to oauth-le...@ietf.org
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> OAuth mailing list -- oauth@ietf.org
>>>>>>> To unsubscribe send an email to oauth-le...@ietf.org
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>> OAuth mailing list -- oauth@ietf.org
>>>>> To unsubscribe send an email to oauth-le...@ietf.org
>>>>>
>>>> _______________________________________________
>>>> OAuth mailing list -- oauth@ietf.org
>>>> To unsubscribe send an email to oauth-le...@ietf.org
>>>>
>>>
>>
>> --
>> Nick Watson | Software Engineer | nwat...@google.com | (781) 608-3352
>>
>
_______________________________________________
OAuth mailing list -- oauth@ietf.org
To unsubscribe send an email to oauth-le...@ietf.org

Reply via email to