I almost included text to that effect, but thought it was getting too wordy. 
However your suggestion is simple and concise. +1

Given all of this discussion, we should include a section on request validation 
in Security Considerations, to provide some context on what might be validated 
when and where, what kinds of problems deployments need to consider, etc. I 
think this is useful to have in the document, but would be too much clutter in 
the main body. We should keep that focused on the precise normative 
requirements.

– 
Annabelle Richard Backman
AWS Identity
 

On 1/8/20, 2:11 AM, "Torsten Lodderstedt" 
<torsten=40lodderstedt....@dmarc.ietf.org> wrote:

    Hi Annabelle, 
    
    thanks for your proposal, which reads reasonable to me. 
    
    I suggest to extend “and that the request has not been modified in a way 
that would affect the outcome of the omitted steps.” a bit to also consider 
policy changes that may have occurred between push and authorization request 
processing. 
    
    "and that the request or the authorization server’s policy has not been 
modified in a way that would affect the outcome of the omitted steps."
    
    best regards,
    Torsten. 
    
    > On 8. Jan 2020, at 03:25, Richard Backman, Annabelle 
<richanna=40amazon....@dmarc.ietf.org> wrote:
    > 
    > I think it’s clearer if we split out the requirements for the PAR 
endpoint and the requirements for the authorization endpoint, given that they 
are each covered in different sections of the doc (2 and 4, respectively). With 
that in mind, here are a couple suggestions:
    >  
    > For the text in Section 2.1:
    >  
    > 3.  The AS MUST validate the pushed request as it would an authorization
    > 
    >     request sent to the authorization endpoint, however the AS MAY omit
    > 
    >     validation steps that it is unable to perform when processing the
    > 
    >     pushed request.
    > 
    >  
    >  
    > Additional text for Section 4 (note that this section pertains to the 
authorization endpoint):
    >  
    > The AS MUST validate authorization requests arising from a pushed request 
as
    > 
    > it would any other authorization request.  The AS MAY omit validation 
steps
    > 
    > that it performed when the request was pushed, provided that it can 
validate
    > 
    > that the request was a pushed request, and that the request has not been
    > 
    > modified in a way that would affect the outcome of the omitted steps.
    > 
    >  
    >  
    > This is longer than the current text and the other proposals, but it adds 
a few important points:
    >   • Turns the 2.1 SHOULD back into a MUST, with an explicit exception for 
validation that can’t be done yet.
    >   • Reinforces the fact that the authorization endpoint still needs to do 
validation.
    >   • Clearly states requirements for when an AS can trust that validation 
happened at the PAR endpoint.
    >  
    > – 
    > Annabelle Richard Backman
    > AWS Identity
    >  
    >  
    > From: Brian Campbell <bcampbell=40pingidentity....@dmarc.ietf.org>
    > Date: Tuesday, January 7, 2020 at 2:54 PM
    > To: Vladimir Dzhuvinov <vladi...@connect2id.com>
    > Cc: Filip Skokan <panva...@gmail.com>, "Richard Backman, Annabelle" 
<richa...@amazon.com>, Dave Tonge <dave.to...@moneyhub.com>, oauth 
<oauth@ietf.org>, Nat Sakimura <n...@sakimura.org>
    > Subject: [UNVERIFIED SENDER] Re: [OAUTH-WG] [UNVERIFIED SENDER] Re: PAR 
metadata
    >  
    > A little more context about that proposed wording is in a github issue at
    >> 
    >>>>        •
    >>>>        •
    >>>>        •
    >>>>        •
    >>>>        •
    https://github.com/oauthstuff/draft-oauth-par/issues/38, which is different 
driver than allowing a PAR endpoint to stash the encrypted request object 
rather than decrypting/validating it. But it's kind of the same concept at some 
level too - that there are some things that can't or won't be validated at the 
PAR endpoint and those then have to be validated at the authorization endpoint..
     
    I rather like your suggested text, Vladimir, and have mentioned it in a 
comment on the aforementioned issue.
     
     
    On Tue, Jan 7, 2020 at 6:58 AM Vladimir Dzhuvinov <vladi...@connect2id.com> 
wrote:
    On 07/01/2020 00:22, Filip Skokan wrote:
    We've been discussing making the following change to the language
     
    The AS SHOULD validate the request in the same way as at the authorization 
endpoint. The AS MUST ensure that all parameters to the authorization request 
are still valid at the time when the request URI is used.
    Could you expand a bit on the second sentence?
    Alternative suggestion:
    The AS MUST validate the request in the same way as at the authorization 
endpoint, or complete the request validation at the authorization endpoint.
    Vladimir
     
    This would allow the PAR endpoint to simply stash the encrypted request 
object instead of decrypting and validating it. All within the bounds of 
"SHOULD - We’d like you to do this, but we can’t always require it". This 
supports "light weight PAR" implementation rather than introducing the 
unnecessary complexity in the form of a second JWKS.
    
    Best,
    Filip
     
     
    On Mon, 6 Jan 2020 at 23:00, Richard Backman, Annabelle 
<richanna=40amazon....@dmarc.ietf.org> wrote:
    The issue isn’t that the PAR endpoint needs access to one specific request 
object decryption key that could reasonably be shared across AS endpoints, but 
that it actually needs access to the private keys for all encryption public 
keys in the JWK set pointed to by the AS’s jwks_uri metadata property. Since 
there is no way to designate one particular key as the one to use for 
encrypting request objects, clients may reasonably use any encryption public 
key in the JWK set to encrypt a request object. As one example of how this 
could expose sensitive data to the PAR endpoint, if the PAR endpoint has all 
the decryption keys for the keys in the AS’s JWK set, it would be able to 
decrypt ID Tokens sent in id_token_hint request parameters. As more and more 
use cases develop for encrypting blobs for the AS, this issue will only get 
worse.
    
     
    
    The PAR endpoint can’t simply stash the encrypted request object, as it is 
required to verify the request, according to §2.1:
    
     
    
    The AS MUST process the request as follows:
     
    .....
     
    3.  The AS MUST validate the request in the same way as at the
              authorization endpoint. ...
     
    This language needs to be more flexible, IMHO, to allow for lightweight PAR 
endpoints that may not have the information or authority needed to perform all 
the validation that happens at the authorization endpoint. I need to think 
about this more before I can say if it would adequately address my concerns, 
but it’d be a good start and makes sense in its own right.
    
     
    
    I think it’s pretty risky for us to base decision on an assumption that no 
one is going to need or want to encrypt pushed request objects, particularly 
when they’re JWTs, and JWTs have well established support for encryption, and 
encrypted JWTs are supported by pass-by-value in OIDC and 
draft-ietf-oauth-jwsreq. But if you insist, here are a few examples for why 
someone might want to do this:
    
    The request object is passed by reference, and accessible on the public 
Internet.
    The request object contains sensitive transaction-related data in RAR 
parameters that the client’s authN/authZ stack doesn’t need to have access to.
    The AS requires request object encryption to minimize exposure to the 
hosted PAR endpoint service it uses.
    #2, but the threat vector is gaps in end-to-end TLS.
    Any of the above, but the concern is message integrity, and the AS requires 
requested objects to be encrypted for confidentiality and integrity protection 
and does not support signed request objects.
     
    
    – 
    
    Annabelle Richard Backman
    
    AWS Identity
    
     
    
     
    
    From: Neil Madden <neil.mad...@forgerock.com>
    Date: Monday, January 6, 2020 at 6:29 AM
    To: Brian Campbell <bcampb...@pingidentity.com>
    Cc: "Richard Backman, Annabelle" <richa...@amazon.com>, Nat Sakimura 
<n...@sakimura.org>, Dave Tonge <dave.to...@moneyhub.com>, Torsten Lodderstedt 
<tors...@lodderstedt..net>, oauth <oauth@ietf.org>
    Subject: [UNVERIFIED SENDER] Re: [OAUTH-WG] PAR metadata
    
     
    
    Agreed.
    
     
    
    In addition, I'm not sure why the PAR endpoint would need access to the 
decryption keys at all. If you're using encrypted request objects then the PAR 
endpoint receives an encrypted JWT and then later makes the same (still 
encrypted) JWT available to the authorization endpoint. If the PAR endpoint is 
doing any kind of decryption or validation on behalf of the authorization 
endpoint then they are clearly not in separate trust boundaries.
    
     
    
    -- Neil
    
     
    
     
    
    On 6 Jan 2020, at 13:57, Brian Campbell 
<bcampbell=40pingidentity....@dmarc.ietf.org> wrote:
    
     
    
    I really struggle to see the assumption that an entity be able to use the 
same key to decrypt the same type of message ultimately intended for the same 
purpose as an artificial limit. The same general assumption   underlies 
everything else in OAuth/OIDC (Vladimir's post points to some but not all 
examples of such). There's no reason for PAR to make a one-off exception. And 
should there be some deployment specific reason that truly requires that kind 
of isolation, there are certainly implementation options that aren't 
compatibility-breaking. And having said all that, I'm honestly a little 
surprised anyone is thinking much about encrypted request objects with PAR as, 
at least with my limited imagination, there's not really a need for it.
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    
    On Fri, Jan 3, 2020 at 2:43 PM Richard Backman, Annabelle 
<richanna=40amazon....@dmarc.ietf.org> wrote:
    
    PAR introduces an added wrinkle for encrypted request objects: the PAR 
endpoint and authorization endpoint may not have access to the same 
cryptographic keys, even though they're both part of the "authorization 
server." Since they're different endpoints with different roles, it's 
reasonable to put them in separate trust boundaries. There is no way to support 
this isolation with just a single "jwks_uri" metadata property.
    
    The two options that I see are:
    
    1. Define a new par_jwks_uri metadata property.
    2. Explicitly state that this separation is not supported.
    
    I strongly perfer #1 as it has a very minor impact on deployments that 
don't care (i.e., they just set par_jwks_uri and jwks_uri to the same value) 
and failing to support this trust boundary creates an artificial limit on 
implementation architecture and could lead to compatibility-breaking 
workarounds.
    
    – 
    Annabelle Richard Backman
    AWS Identity
    
    
    On 12/31/19, 8:07 AM, "OAuth on behalf of Torsten Lodderstedt" 
<oauth-boun...@ietf.org on behalf of torsten=40lodderstedt....@dmarc.ietf.org> 
wrote:
    
        Hi Filip, 
    
        > On 31. Dec 2019, at 16:22, Filip Skokan <panva...@gmail.com> wrote:
        > 
        > I don't think we need a *_auth_method_* metadata for every endpoint 
the client calls directly, none of the new specs defined these (e.g. device 
authorization endpoint or CIBA), meaning they also didn't follow the scheme 
from RFC 8414 where introspection and revocation got its own metadata. In most 
cases the unfortunately named `token_endpoint_auth_method` and its related 
metadata is what's used by clients for all direct calls anyway.
        > 
        > The same principle could be applied to signing (and encryption) 
algorithms as well.
        > 
        > This I do not follow, auth methods and their signing is dealt with by 
using `token_endpoint_auth_methods_supported` and 
`token_endpoint_auth_signing_alg_values_supported` - there's no encryption for 
the `_jwt` client auth methods. 
        > Unless it was meant to address the Request Object signing and 
encryption metadata, which is defined and IANA registered by OIDC. PAR only 
references JAR section 6.1 and 6.2 for decryption/signature validation and 
these do not mention the metadata (e.g. request_object_signing_alg) anymore 
since draft 07.
    
        Dammed! You are so right. Sorry, I got confused somehow. 
    
        > 
        > PS: I also found this comment related to the same question about auth 
metadata but for CIBA.
    
        Thanks for sharing. 
    
        > 
        > Best,
        > Filip
    
        thanks,
        Torsten. 
    
        > 
        > 
        > On Tue, 31 Dec 2019 at 15:38, Torsten Lodderstedt 
<tors...@lodderstedt.net> wrote:
        > Hi all,
        > 
        > Ronald just sent me an email asking whether we will define metadata 
for 
        > 
        > pushed_authorization_endpoint_auth_methods_supported and
        > pushed_authorization_endpoint_auth_signing_alg_values_supported.
        > 
        > The draft right now utilises the existing token endpoint 
authentication methods so there is basically no need to define another 
parameter. The same principle could be applied to signing (and encryption) 
algorithms as well. 
        > 
        > What’s your opinion?
        > 
        > best regards,
        > Torsten.
    
    
    
    _______________________________________________
    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
    
    

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

Reply via email to