Re: [OAUTH-WG] Can a client send the Authorization Request?

Torsten Lodderstedt <torsten@lodderstedt.net> Tue, 25 May 2021 15:25 UTC

Return-Path: <torsten@lodderstedt.net>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 076CD3A1058 for <oauth@ietfa.amsl.com>; Tue, 25 May 2021 08:25:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.087
X-Spam-Level:
X-Spam-Status: No, score=-2.087 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=lodderstedt.net
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oJj_RvSPMsL8 for <oauth@ietfa.amsl.com>; Tue, 25 May 2021 08:25:25 -0700 (PDT)
Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 21B133A1053 for <oauth@ietf.org>; Tue, 25 May 2021 08:25:24 -0700 (PDT)
Received: by mail-wm1-x32d.google.com with SMTP id f6-20020a1c1f060000b0290175ca89f698so13704305wmf.5 for <oauth@ietf.org>; Tue, 25 May 2021 08:25:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lodderstedt.net; s=google; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=fPKG0es0vbSQ5XIBVdMIJgcpE3jJaW35d6mJmx82du0=; b=TBbGY+wZWV2yEQQawZiLllBkllWbBM3XsudsvAMwRQ92zWnOOF//JUtxRUTc87p4/M SyIs8MYdUMsd8v5UdTbmGhlbsH54spjPsV6Z2vw6RKjJ7CJ4572h6JBuViaGgi6poRUz mzwJkBexZpnaYm0REM2K1QlQd6244vb71O2ZesQfLvsexsaSk2U0787Ds8XQT2U3IGhK wgUoQkiLWDjhJzpf0AvFGv8EWSyJbQctE0WhjIwKpY8h1uNKazvoVb2l9B0YgSiMVnjR oIjaENP07bUZ/ZYQw1OlDDeSRmV/9sPi3X0cER7uiVqzA5dEya9pAcSED1D1ANXpuvHh mxNw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=fPKG0es0vbSQ5XIBVdMIJgcpE3jJaW35d6mJmx82du0=; b=Z1ePyq/+RfUhI2xCkk8Kam6Fx/CKwcmhnuoM7WiLTL7+tLTxSbkNTCoR6pLCWJeb+6 EIXIaklMtdfoU4qpmsOkcq9t7HfBcy3fhM1GbyeFisYK+v1+6QUHZ+jSuJSu2Uhd1EnA B6NZ4uJOuvE48zATeG3EngsrBnEd/LpOQoTpYGq8MRUyDA5/9EtbZw1aOpWjiFiorwqR h3NRdujSWyFTVkOrPbYrGrUOqdSO67KStyxEP1RWoZHYWwbdseD4loaZYkKT6qT0x4ty Nyjf6yUQnzzBMZAw/2G6bGV1DqzRuqVskv1mwkAF72Gl79c2uNfKD2VNTUY0J87HHauG Ig5w==
X-Gm-Message-State: AOAM532eP+uEY86Oq5ew3MNMMtrLxDGf69uqrcvulbjQpCkPPqmWnANp 1vrzDY71/hYblcKPGUgAr+C9nw==
X-Google-Smtp-Source: ABdhPJzVg0JoWzAtbWfOQVM9HWUcnvK1QTqCMeFTccGRwH28svKG1ef7K0/eJLf3zeL5dvORqUGWyg==
X-Received: by 2002:a05:600c:35d3:: with SMTP id r19mr4383946wmq.3.1621956321773; Tue, 25 May 2021 08:25:21 -0700 (PDT)
Received: from smtpclient.apple (p4fc088d8.dip0.t-ipconnect.de. [79.192.136.216]) by smtp.gmail.com with ESMTPSA id e22sm11169725wme.48.2021.05.25.08.25.20 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 25 May 2021 08:25:21 -0700 (PDT)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.80.0.2.43\))
From: Torsten Lodderstedt <torsten@lodderstedt.net>
In-Reply-To: <952456782.01621954787444.JavaMail.root@shefa>
Date: Tue, 25 May 2021 17:25:20 +0200
Cc: oauth <oauth@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <E8070711-2AEB-4C0C-9E11-581109876C15@lodderstedt.net>
References: <952456782.01621954787444.JavaMail.root@shefa>
To: "A. Rothman" <amichai2@amichais.net>
X-Mailer: Apple Mail (2.3654.80.0.2.43)
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/jMcCNZ9FQpFM_qZMUhk-1weS2xE>
Subject: Re: [OAUTH-WG] Can a client send the Authorization Request?
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>, <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth/>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 25 May 2021 15:25:31 -0000

Hi,

> Am 25.05.2021 um 16:59 schrieb A. Rothman <amichai2@amichais.net>:
> 
> Hi,
> 
> In RFC 6749 section 4.1, the Authorization Code Grant flow starts with:
> 
> (A)  The client initiates the flow by directing the resource owner's
>         user-agent to the authorization endpoint.  The client includes
>         its client identifier, requested scope, local state, and a
>         redirection URI to which the authorization server will send the
>         user-agent back once access is granted (or denied).
> 
> (B)  The authorization server authenticates the resource owner (via
>         the user-agent) and establishes whether the resource owner
>         grants or denies the client's access request.
> 
> 
> From this, and most explanation I've seen, I understand that the client (e.g. my web server) is supposed to prepare the Authorization Request URL but instead of sending it to the Authorization Server, it redirects the user agent which is the one actually making the HTTP request. It then goes back and forth with the Authorization Server (with HTML and posting forms and whatnot), and eventually receives the Authorization Response which redirects the user agent back to the client's callback URL with the included code parameter. So as far as the Authorization Request/Response flow goes, there is no direct communications between the client and Authorization Server up to this point (before the token exchange).
> 
> 1. Basically correct so far?

yep. 

> 
> Now, I've encountered a provider that works slightly differently (but still with the Authorization Code Grant scheme): the client (my web server) is supposed to send the Authorization Request directly to the Authorization Server, then receive some opaque URL, and redirect the user agent to there to continue the process. I suppose this URL is equivalent to one from the middle of the 'back and forth' in the previous scenario. The rest of the flow continues the same. So basically, the initial redirect response and HTTP request are reversed - instead of first redirect and then request (from user agent), there is first the request (from client)  and then redirect.
> 
> So the questions are:
> 
> 2. Is this compliant with the RFC?

I don’t think so. 

> 
> 3. Is it any less secure? (even if not strictly compliant with the RFC's flow, it may still be secure...)

Difficult to access without further details. Beside this, I see the service provider as being responsible to ensuring it is secure. 

> 
> 4. If it is less secure, what are the possible vulnerabilities or attacks made possible here that are mitigated in the original flow?
> 
> 5. They claim the change is made because they insist on using MTLS on all Authentication Server endpoints, including the Authorization Endpoint. Does this make sense? Does it add security, or is the OAUTH2 flow just as secure without MTLS on the Authorization Endpoint?

I kind of understand the rationale. Sending the authorisation request to the AS first (using mTLS) allows the AS to check the client’s identity and permissions before the user interaction starts. With a standard redirect (without signed request objects), the AS never knows whether request really comes from the legit client. This is determined once the code is exchanged at the token endpoint (rather late in the process). 

Fo this and other reasons, the OAuth WG has specified the Pushed Authorization Requests (https://datatracker.ietf.org/doc/html/draft-ietf-oauth-par) extension that works similarly. We indeed have done a security analysis of this draft. 

BTW: the communication between user agent and authorisation server is still not protected with mTLS in the solution you described ;-).

best regards,
Torsten.  

> 
> Thanks,
> 
> Amichai
> 
> 
> 
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.google.com/url?q=https://www.ietf.org/mailman/listinfo/oauth&source=gmail-imap&ust=1622559602000000&usg=AOvVaw3uYa4JD_Cmmp4TyaTR0UqL