Thanks to all. I incorporated the text into the upcoming next revision of the draft.
> On 3. Sep 2020, at 14:14, Dave Tonge <dave.to...@momentumft.co.uk> wrote: > > Looks really good to me, thanks Brian. > > On Wed, 2 Sep 2020 at 21:42, Brian Campbell > <bcampbell=40pingidentity....@dmarc.ietf.org> wrote: > Thanks Torsten, Taka, and Justin, > > I took the revised text from Justin and tweaked it with some typo cleanup and > minor adjustments to make what is hopefully a final proposal below. I had a > similar feeling about the last paragraph not really fitting but don't have a > better location to suggest so am just leaving it. > > 2.4. Management of Client Redirect URIs > > While OAuth 2.0 [RFC6749] allows clients to use unregistered redirect_uri > values in certain circumstances, or for the authorization server to apply its > own matching semantics to the redirect_uri value presented by the client at > the authorization endpoint, the OAuth Security BCP > [I-D.ietf-oauth-security-topics] as well as OAuth 2.1 [I-D.ietf-oauth-v2-1] > require an authorization server exactly match the redirect_uri parameter > against the set of redirect URIs previously established for a particular > client. This is a means for early detection of client impersonation attempts > and prevents token leakage and open redirection. As a downside, this can make > client management more cumbersome since the redirect URI is typically the > most volatile part of a client policy. > > The exact matching requirement MAY be relaxed by the authorization server for > a confidential client using pushed authorization requests since the > authorization server authenticates the client before the authorization > process starts and thus ensures it is interacting with the legitimate client. > The authorization server MAY allow such clients to specify redirect_uri > values that were not previously registered with the authorization server. > This will give the client more flexibility (e.g. to mint distinct redirect > URI values per authorization server at runtime) and can simplify client > management. It is at the discretion of the authorization server to apply > restrictions on supplied redirect_uri values, e.g. the authorization server > MAY require a certain URI prefix or allow only a query parameter to vary at > runtime. > > The ability to set up transaction specific redirect URIs is also useful in > situations where client ids and corresponding credentials and policies are > managed by a trusted 3rd party, e.g. via client certificates containing > client permissions. Such an externally managed client could interact with an > authorization server trusting the respective 3rd party without the need for > an additional registration step. > > On Wed, Sep 2, 2020 at 8:09 AM Justin Richer <jric...@mit.edu> wrote: > The real conflict here is with the BCP and 2.1, both of which adopt the > stricter matching semantics for redirect URIs than 6749 does on its own. This > section would be needed to clarify how they relate to each other. That said, > I think adding some of Taka’s observations to Torsten’s text wouldn’t hurt: > > 2.4. Management of redirect_uri > > While OAuth 2.0 [RFC6749] allows clients to use unregistered redirect_uri > values in certain circumstances, or for the AS to apply its own matching > semantics to the redirect_uri value presented by the client at the > authorization endpoint, the OAuth Security BCP > [I-D.ietf-oauth-security-topics] as well as OAuth 2.1 [I-D.ietf-oauth-v2-1] > require an AS to excactly match the redirect_uri parameter against the set of > redirect URIs previously established for a particular client. This is a means > to early detect attempts to impersonate a client and prevent token leakage > and open redirection. As a downside, it makes client management more complex > since the redirect URI is typically the most volatile part of a client policy. > > This requirement MAY be relaxed by the AS if a confidential client uses > pushed authorization requests since the AS authenticates the client before > the authorization process starts and that way ensures it interacts with the > legit client. The AS MAY allow such clients to specify redirect_uri values > not previously registered with the AS. This will give the client more > flexibility (e.g. to mint AS-specific redirect URIs on the fly) and makes > client management much easier. It is at the discretion of the AS to apply > restriction on redirect_uri values, e.g. the AS MAY require a certain URI > prefix or allow only a query parameter to vary at runtime. > > I also feel like this paragraph belongs in a different section outside of > here. I’m not sure where, but it doesn’t quite seem to fit, to me. It’s not > the end of the world if it stays here though as it’s a decent view on the > “why". > > The aibility to set up transaction specific redirect URIs is also useful in > situations where client ids and correspoding credentials and policies are > managed by a trusted 3rd party, e.g. via client certifiates containing client > permissions. Such an externally managed client could interact with an AS > trusting the respective 3rd party without the need for an additional > registration step. > > — Justin > >> On Sep 1, 2020, at 11:05 PM, Takahiko Kawasaki <t...@authlete.com> wrote: >> >> Under existing specifications (RFC 6749, OIDC Core 1.0 and FAPI), a client >> can choose an arbitrary redirect_uri without registering it only when all >> the following conditions are satisfied. >> >> 1. The client type of the client is "confidential". (RFC 6749 Section >> 3.1.2.2 requires that public clients register redirect URIs.) >> 2. The flow is not "implicit". (RFC 6749 Section 3.1.2.2 requires that >> confidential clients utilizing the implicit grant type register redirect >> URIs.) >> 3. The authorization request is not an OIDC request. (OIDC Core 1.0 Section >> 3.1.2.1 requires that redirect_uri match a pre-registered one.) >> 4. The authorization request is not a FAPI request. (FAPI Part 1 Section >> 5.2.2 Clause 8 requires that redirect URIs be pre-registered.) >> >> In short, under existing specifications, pure RFC-6749 >> authorization-code-flow requests from confidential clients can choose an >> arbitrary redirect_uri without registering it. Once OIDC or FAPI is used, >> existing specifications require pre-registration of redirect URIs. I'm not >> sure but if PAR's "redirect_uri Management" is going to introduce rules that >> conflict with existing specifications, it is better to list the conflicts >> explicitly in the section. >> >> Best Regards, >> Takahiko Kawasaki >> >> >> On Wed, Sep 2, 2020 at 3:48 AM Torsten Lodderstedt >> <torsten=40lodderstedt....@dmarc.ietf.org> wrote: >> Here is my proposal for the new section: >> >> 2.4. redirect_uri Management >> >> The OAuth Security BCP [I-D.ietf-oauth-security-topics] as well as OAuth 2.1 >> [I-D.ietf-oauth-v2-1] require an AS to excactly match the redirect_uri >> parameter against the set of redirect URIs previously established for a >> particular client. This is a means to early detect attempts to impersonate a >> client and prevent token leakage and open redirection. As a downside, it >> makes client management more complex since the redirect URI is typically the >> most volatile part of a client policy. >> >> This requirement MAY be relaxed by the AS, if a confidential client uses >> pushed authorization requests since the AS authenticates the client before >> the authorization process starts and that way ensures it interacts with the >> legit client. The AS MAY allow such clients to specify redirect_uri values >> not previously registered with the AS. This will give the client more >> flexibility (e.g. to mint AS-specific redirect URIs on the fly) and makes >> client management much easier. It is at the discretion of the AS to apply >> restriction on redirect_uri values, e.g. the AS MAY require a certain URI >> prefix or allow only a query parameter to vary at runtime. >> >> Note: The aibility to set up transaction specific redirect URIs is also >> useful in situations where client ids and correspoding credentials and >> policies are managed by a trusted 3rd party, e.g. via client certifiates >> containing client permissions. Such an externally managed client could >> interact with an AS trusting the respective 3rd party without the need for >> an additional registration step. >> >> > On 29. Aug 2020, at 17:22, Justin Richer <jric...@mit.edu> wrote: >> > >> > I completely agree with the utility of the function in question here and >> > it needs to be included. I’m in favor of creating a dedicated section for >> > redirect_uri management, so that we can explain exactly how and why to >> > relax the requirement from core OAuth. In addition, I think we want to >> > discuss that the AS might have its own restrictions on which redirect URIs >> > an authenticated client might be able to use. For example, registering a >> > client with a Redirect URI prefix, or allowing only a query parameter to >> > vary at runtime. All of these can be enforced in PAR because the client is >> > presenting its authentication, as you point out, so the AS can determine >> > which policies should apply. >> > >> > — Justin >> > >> >> On Aug 29, 2020, at 7:52 AM, Torsten Lodderstedt >> >> <tors...@lodderstedt.net> wrote: >> >> >> >> >> >>> >> >>> >> >>> ¶6: Does the AS really have "the ability to authenticate and authorize >> >>> clients”? I think what we mean here is "the ability to authenticate >> >>> clients and validate client requests”, but I’m not positive of the >> >>> intent. >> >>> >> >>> I think the intent is that the AS can check whether a client is >> >>> authorized to make a particular authorization request (specific scopes, >> >>> response type, etc.). But checking authorization to request >> >>> authorization is confusing wording. I think your working is less >> >>> confusing and still allows for the intent. >> >>> >> >>> I'll let Torsten interject if he feels differently as I think he >> >>> originally wrote the text in question. >> >> >> >> that was the original intent. I think “validate" is fine. >> >> >> >>> >> >>> >> >>> >> >>> ¶7: I’m not sure I buy this example. Even if the clientID is managed >> >>> externally, the association with a set or pattern of allowed redirect >> >>> URIs is still important, and the AS will need to know what that is. I >> >>> think this example could lead an AS developer to (erroneously and >> >>> dangerously) conclude that they don’t have to check any other values in >> >>> a request, including scope and redirect URI. It’s important that DynReg >> >>> doesn’t alleviate that issue, but removal of DynReg doesn’t really >> >>> change things in that regard. Suggest removing example or reworking >> >>> paragraph. >> >>> >> >>> I'm going to have to defer to Torsten on this because, to be honest, I'm >> >>> not too sure about it myself. I tend to lean towards thinking the draft >> >>> would be better off without it. >> >>> >> >> >> >> In the traditional authorization flow, the redirect_uri serves as way to >> >> make sure the AS is really talking to the legit client and the allowed >> >> redirect_uri values are determined by the legit client at registration >> >> time (might be manually). >> >> >> >> With PAR, we have a much stronger means to ensure the AS is talking to >> >> the legit client. That’s why I don’t see an issue with letting the client >> >> set a per transaction redirect_uri. This will give the client more >> >> flexibility (mint AS-specific redirect URIs on the fly) and makes client >> >> management much easier since redirect URIs are the most volatile part of >> >> a client policy. >> >> >> >> It also makes use of OAuth much easier in deployments where client >> >> identities are managed by external entities (even without any idea of >> >> OAuth). A prominent example is open banking in the EU (aka PSD2). The >> >> (technical) identity of any PSD2-licensed client is asserted by an eIDAS >> >> compliant CA in a special X.509 certificate. Those certificates contain >> >> the permissions (access to account information and/or payment initiation >> >> allowed) and the identity (member state specific). But they don’t contain >> >> OAuth policy values. Nevertheless, the regulation requires any financial >> >> institution in the EU to at runtime, without any registration, to accept >> >> and process calls from any licensed PSD2 clients. >> >> >> >> There are two ways to cope with it in OAuth context: >> >> a) use dynamic client registration with the X.509 cert as credential. >> >> Unfortunately, RFC 7591 does not support other client authentication >> >> means then an initial access token. Beside that, it would violate the >> >> text of the regulation. >> >> b) establish a redirect URL with every transaction. This is the >> >> recommended approach in at least one of the PSD2 specs. >> >> >> >> PAR is a clean way to solve that problem. >> >> >> >> I don’t want this text to cause confusing. On the other hand this >> >> potential of PAR is way too important to not mention it at all. What >> >> about moving it into a special section "redirect_uri management”? >> >> >> >>> >> >> >> > >> >> _______________________________________________ >> 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 > > > -- > Dave Tonge > CTO > > Moneyhub Financial Technology, 5th Floor, 10 Temple Back, Bristol, BS1 6FL > t: +44 (0)117 280 5120 > > Moneyhub Enterprise is a trading style of Moneyhub Financial Technology > Limited which is authorised and regulated by the Financial Conduct Authority > ("FCA"). Moneyhub Financial Technology is entered on the Financial Services > Register (FRN 809360) at fca.org.uk/register. Moneyhub Financial Technology > is registered in England & Wales, company registration number 06909772 . > Moneyhub Financial Technology Limited 2018 © > > DISCLAIMER: This email (including any attachments) is subject to copyright, > and the information in it is confidential. Use of this email or of any > information in it other than by the addressee is unauthorised and unlawful. > Whilst reasonable efforts are made to ensure that any attachments are > virus-free, it is the recipient's sole responsibility to scan all attachments > for viruses. All calls and emails to and from this company may be monitored > and recorded for legitimate purposes relating to this company's business. Any > opinions expressed in this email (or in any attachments) are those of the > author and do not necessarily represent the opinions of Moneyhub Financial > Technology Limited or of any other group company. > > Moneyhub Enterprise is a trading style of Moneyhub Financial Technology > Limited which is authorised and regulated by the Financial Conduct Authority > ("FCA"). Moneyhub Financial Technology is entered on the Financial Services > Register (FRN 809360) at https://register.fca.org.uk/. Moneyhub Financial > Technology is registered in England & Wales, company registration number > 06909772. Moneyhub Financial Technology Limited 2020 © Moneyhub Enterprise, > Regus Building, Temple Quay, 1 Friary, Bristol, BS1 6EA. > > DISCLAIMER: This email (including any attachments) is subject to copyright, > and the information in it is confidential. Use of this email or of any > information in it other than by the addressee is unauthorised and unlawful. > Whilst reasonable efforts are made to ensure that any attachments are > virus-free, it is the recipient's sole responsibility to scan all attachments > for viruses. All calls and emails to and from this company may be monitored > and recorded for legitimate purposes relating to this company's business. Any > opinions expressed in this email (or in any attachments) are those of the > author and do not necessarily represent the opinions of Moneyhub Financial > Technology Limited or of any other group company. > > > _______________________________________________ > 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