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.
>>
>> 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
>
_______________________________________________
OAuth mailing list -- oauth@ietf.org
To unsubscribe send an email to oauth-le...@ietf.org

Reply via email to