Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authorization Request (JAR) vs OIDC request object
Takahiko Kawasaki <taka@authlete.com> Tue, 14 January 2020 17:21 UTC
Return-Path: <taka@authlete.com>
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 48981120A26 for <oauth@ietfa.amsl.com>; Tue, 14 Jan 2020 09:21:04 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.896
X-Spam-Level:
X-Spam-Status: No, score=-1.896 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=authlete-com.20150623.gappssmtp.com
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 qU_yiZOnskEn for <oauth@ietfa.amsl.com>; Tue, 14 Jan 2020 09:20:59 -0800 (PST)
Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com [IPv6:2a00:1450:4864:20::42f]) (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 AEA11120A47 for <oauth@ietf.org>; Tue, 14 Jan 2020 09:20:52 -0800 (PST)
Received: by mail-wr1-x42f.google.com with SMTP id z7so12947874wrl.13 for <oauth@ietf.org>; Tue, 14 Jan 2020 09:20:52 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=authlete-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=lVxyjtIAbRqyGY97ymZUlLHdtEy4u7ya4k/Y45qnvpo=; b=PZBVe7/+zIIz78Xobh+2RkNZjV+T95KtIbJKSUwrnd6AANH3F5U6N0x8pq0F7xjbHY HWNjtIx3X41ezPDf1MQbKlnjQqQOTYNvpA8GYGnqmjG+zDgwJWjw673yu1DfodTXEvfW 7OA5QBGqlBZyhkLJ2CEym+rxkT8M3CT/pdLH6NHgfIKLn4IO5Kku/2OC/R/piU4Vpv2T JW4HqeiQGhTTNsIJ9xVHWhejrmlJtfkc3dCdlAtB0mlgGZmPJDcrVSMRW9SlYj3rgvsm dZ9zfkMQK0JMB1nrhAmLlNgOfx4B/vwBXF4VrnDOzwSGytqmKVB5ZHQ2rqnLUM7oyVUG TKFA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=lVxyjtIAbRqyGY97ymZUlLHdtEy4u7ya4k/Y45qnvpo=; b=EPyA6HTn6w7IFK40Sl6uXzXjdIUKxspxemdBegz0G1DdzntdEdQALFaYHOgshfVkrE +AxwStkm23kNV3kq97EzCbmBTPZQF+F8rOtPbSToq0S9bPzRzZ5smytWGvykwsW23IM2 xJCmFe6iAYOGn4VyHf1M8jMN3wDM0MF6/LwW6+j09jwA+orfMaJAv6JsA/oPsRYGSEvU nopQmeDH1jr6nhq61V17h56aOQ5n/T5jjvhdwbfuDay7KwHixzL2FWYsnUKQWwjt5DX4 wLC0Yg+tFCmeNUlNijbW4tF3egeqNf7k+nBKcfCe0Ut2bHDA2vV/tOvdNpciaAZBuOiX J6IQ==
X-Gm-Message-State: APjAAAWtuslhIcqQnJxqzMMSBa8Ulq319YUB4IpgRHrdbgWgVnvQiCVx HxcQlRj12TLwPNfMUpo1PUZliHlUX+sqy0hrOE2atOODCgk=
X-Google-Smtp-Source: APXvYqzoju0I2rmR2Ebup0MSE6e11F7gHiRNUX2baxZLPVDdvN6bm1ES+VKPTfebx/H5OzmlGDbbHfWduRoqYS8AmjQ=
X-Received: by 2002:adf:8150:: with SMTP id 74mr27177410wrm.114.1579022450982; Tue, 14 Jan 2020 09:20:50 -0800 (PST)
MIME-Version: 1.0
References: <fc3805e5-e908-00db-a734-990721371ab2@connect2id.com> <79C4475C-FDEB-42C8-8A44-7BFE4DBF9453@gmail.com> <110a95d9-2981-6d2b-9cbf-9658be3585cc@connect2id.com> <CAANoGhK0-n6V_RogvVZ=8J8AQCEUUVJQn4_7wSWYixeQM8aZsw@mail.gmail.com> <CH2PR00MB0843D5044E11E0F4CE5F5D09F53B0@CH2PR00MB0843.namprd00.prod.outlook.com> <CAANoGhJB4mYSFiWKt3T=cObH7uCW0s3Zpv2m92+YaAY2Oy4mqw@mail.gmail.com> <2aca5c38-bb20-497e-14ed-f4a9245a9439@connect2id.com> <7baae999-47c1-f749-6c51-f45022ab1a3d@ve7jtb.com> <3d9ffc74-6c9c-48a1-0c98-65a7465e8dbc@connect2id.com>
In-Reply-To: <3d9ffc74-6c9c-48a1-0c98-65a7465e8dbc@connect2id.com>
From: Takahiko Kawasaki <taka@authlete.com>
Date: Wed, 15 Jan 2020 02:20:39 +0900
Message-ID: <CAHdPCmNHeUyDjrc32oQPZ5g3oars-XY3vq2p3qt2LzzkZMTw5w@mail.gmail.com>
To: Vladimir Dzhuvinov <vladimir@connect2id.com>
Cc: John Bradley <ve7jtb@ve7jtb.com>, Mike Jones <Michael.Jones@microsoft.com>, IETF oauth WG <oauth@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000489442059c1cd054"
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/RpKykSvMhX-k8By5ouv9piXbxJw>
Subject: Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authorization Request (JAR) vs OIDC request object
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, 14 Jan 2020 17:21:04 -0000
Well, embedding a client_id claim in the JWE header in order to achieve "request parameters outside the request object should not be referred to" is like "putting the cart before the horse". Why do we have to avoid using the traditional client_id request parameter so stubbornly? The last paragraph of Section 3.2.1 <https://tools.ietf.org/html/rfc6749#section-3.2.1> of RFC 6749 says as follows. *A client MAY use the "client_id" request parameter to identify itself when sending requests to the token endpoint. In the "authorization_code" "grant_type" request to the token endpoint, an unauthenticated client MUST send its "client_id" to prevent itself from inadvertently accepting a code intended for a client with a different "client_id". This protects the client from substitution of the authentication code. (It provides no additional security for the protected resource.)* If the same reasoning applies, a client_id must always be sent with request / request_uri because client authentication is not performed at the authorization endpoint. In other words, *an unauthenticated client (every client is unauthenticated at the authorization endpoint) MUST send its "client_id" to prevent itself from inadvertently accepting a request object for a client with a different "client_id".* Best Regards, Taka On Tue, Jan 14, 2020 at 12:57 AM Vladimir Dzhuvinov <vladimir@connect2id.com> wrote: > John, thanks, much appreciated! > On 11/01/2020 21:36, John Bradley wrote: > > Yes JAR is not prohibiting paramater replication in the header. > > I will see if i can add something in final edits to call that out. > > John B. > On 1/11/2020 6:16 AM, Vladimir Dzhuvinov wrote: > > Thanks Mike for the rfc7519 section-5.3 > <https://tools.ietf.org/html/rfc7519#section-5.3> pointer. Can this > parameter replication be used for client_id or the client_id ass "iss" even > though it isn't explicitly mentioned in the JAR spec? > On 11/01/2020 02:58, John Bradley wrote: > > Right we just don't say to put the iss there in OIDC if it's symetricly > encrypted. > > OIDC doesn't have the symmetric key selection issue, I suppose that why > the possibility to replicate params to the JWE header isn't mentioned at > all. OIDC requires the top-level query params to represent a valid OAuth > 2.0 request, and there client_id is required. If the client_id is present > the client registration together with any present client_secret can be > retrieved. > > I reread the JAR spec, this is the only place that mentions handling of > symmetric JWE. > > https://tools.ietf.org/html/draft-ietf-oauth-jwsreq-20#section-10.2 > > (b) Verifying that the symmetric key for the JWE encryption is the > correct one if the JWE is using symmetric encryption. > > > Vladimir > > > > On Fri, Jan 10, 2020, 9:41 PM Mike Jones <Michael.Jones@microsoft.com> > wrote: > >> The technique of replicating JWT claims that need to be publicly visible >> in an encrypted JWT in the header is defined at >> https://tools.ietf.org/html/rfc7519#section-5.3. (Thanks to Dick Hardt >> for bringing this need to my attention as we were finishing the JWT spec.) >> >> >> >> -- Mike >> >> >> >> *From:* OAuth <oauth-bounces@ietf.org> *On Behalf Of * John Bradley >> *Sent:* Friday, January 10, 2020 2:15 PM >> *To:* Vladimir Dzhuvinov <vladimir@connect2id.com> >> *Cc:* IETF oauth WG <oauth@ietf.org> >> *Subject:* [EXTERNAL] Re: [OAUTH-WG] JWT Secured Authorization Request >> (JAR) vs OIDC request object >> >> >> >> The intent was to do that, but specs change once the OAuth WG and IESG >> get there hands on them. >> >> >> >> Being backwards compatible with OIDC is not a compelling argument to the >> IESG. >> >> >> >> We were mostly thinking of asymmetric encryption. >> >> >> >> Specifying puting the issuer and or the audience in the headder has come >> up in the past but probably is not documented. >> >> >> >> John B >> >> >> >> On Fri, Jan 10, 2020, 6:29 PM Vladimir Dzhuvinov <vladimir@connect2id.com> >> wrote: >> >> Yes, putting the client_id into the JWE header is a way around the need >> to have the client_id outside the JWE as top-level authZ request >> parameter. >> >> Unfortunately this work around isn't mentioned anywhere, I just checked >> the most recent draft-ietf-oauth-jwsreq-20. >> >> Our DDoS attack mitigation (for OIDC request_uri) also relies on the >> presence of client_id as top-level parameter, together with requiring >> RPs to register their request_uri's (so that we don't need to build and >> store an index of all request_uri's). I just had a look at "DDoS Attack >> on the Authorization Server" and also realised the request_uri >> registration isn't explicitly mentioned as attack prevention ("the >> server should (a) check that the value of "request_uri" parameter does >> not point to an unexpected location"). >> >> https://tools.ietf.org/html/draft-ietf-oauth-jwsreq-20#section-10.4.1 >> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftools.ietf.org%2Fhtml%2Fdraft-ietf-oauth-jwsreq-20%23section-10.4.1&data=02%7C01%7CMichael.Jones%40microsoft.com%7Cc470d4ec4bd14d481c0f08d7961a8abb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637142913068793193&sdata=%2FvHVp68SN5CAHimqZ5jx93aOCIruxqLCRMUFCc5DSxc%3D&reserved=0> >> >> To be honest, I feel quite bad about the situation with JAR we are in >> now. For some reason I had the impression that OAuth JAR was going to be >> the OIDC request / request_uri for general OAuth 2.0 use, as with other >> OIDC bits that later became general purpose OAuth 2.0 specs. >> >> I find it unfortunate I didn't notice this when I was reviewing the spec >> in the past. >> >> Vladimir >> >> >> On 10/01/2020 22:39, Filip Skokan wrote: >> > Vladimir, >> > >> > For that very case the payload claims may be repeated in the JWE >> protected header. An implementation wanting to handle this may look for >> iss/client_id there. >> > >> > Odesláno z iPhonu >> > >> >> 10. 1. 2020 v 21:19, Vladimir Dzhuvinov <vladimir@connect2id.com>: >> >> >> >> I just realised there is one class of JARs where it's practially >> >> impossible to process the request if merge isn't supported: >> >> >> >> The client submits a JAR encrypted (JWT) with a shared key. OIDC allows >> >> for that and specs a method for deriving the shared key from the >> >> client_secret: >> >> >> >> https://openid.net/specs/openid-connect-core-1_0.html#Encryption >> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fopenid.net%2Fspecs%2Fopenid-connect-core-1_0.html%23Encryption&data=02%7C01%7CMichael.Jones%40microsoft.com%7Cc470d4ec4bd14d481c0f08d7961a8abb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637142913068793193&sdata=soK9t7pzu504iILuDNFnG%2BMLxZPP2pN6ugEJ4ZOpqd4%3D&reserved=0> >> >> >> >> If the JAR is encrypted with the client_secret, and there is no >> >> top-level client_id parameter, there's no good way for the OP to find >> >> out which client_secret to get to try to decrypt the JWE. Unless the OP >> >> keeps an index of all issued client_secret's. >> >> >> >> >> >> OP servers which require request_uri registration >> >> (require_request_uri_registration=true) and don't want to index all >> >> registered request_uri's, also have no good way to process a >> request_uri >> >> if the client_id isn't present as top-level parameter. >> >> >> >> >> >> Vladimir >> >> >> >> >> >>> On 10/01/2020 20:13, Torsten Lodderstedt wrote: >> >>> >> >>>>> Am 10.01.2020 um 16:53 schrieb John Bradley <ve7jtb@ve7jtb.com>: >> >>>> I think Torsten is speculating that is not a feature people use. >> >>> I’m still trying to understand the use case for merging signed and >> unsigned parameters. Nat once explained a use case, where a client uses >> parameters signed by a 3rd party (some „certification authority“) in >> combination with transaction-specific parameters. Is this being done in the >> wild? >> >>> >> >>> PS: PAR would work with both modes. >> >> >> _______________________________________________ >> OAuth mailing list >> OAuth@ietf.org >> https:// >> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ietf.org%2Fmailman%2Flistinfo%2Foauth&data=02%7C01%7CMichael.Jones%40microsoft.com%7Cc470d4ec4bd14d481c0f08d7961a8abb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637142913068803145&sdata=kobH%2FsGT7ElSSUCJvu%2FbiAqnRCXx%2B4SZNJsrL%2FCuVyc%3D&reserved=0> >> >> > _______________________________________________ > OAuth mailing list > OAuth@ietf.org > https://www.ietf.org/mailman/listinfo/oauth >
- Re: [OAUTH-WG] JWT Secured Authorization Request … Torsten Lodderstedt
- Re: [OAUTH-WG] JWT Secured Authorization Request … John Bradley
- [OAUTH-WG] JWT Secured Authorization Request (JAR… Filip Skokan
- Re: [OAUTH-WG] JWT Secured Authorization Request … Torsten Lodderstedt
- Re: [OAUTH-WG] JWT Secured Authorization Request … Filip Skokan
- Re: [OAUTH-WG] JWT Secured Authorization Request … Brian Campbell
- Re: [OAUTH-WG] JWT Secured Authorization Request … Filip Skokan
- Re: [OAUTH-WG] JWT Secured Authorization Request … Filip Skokan
- Re: [OAUTH-WG] JWT Secured Authorization Request … Brian Campbell
- Re: [OAUTH-WG] JWT Secured Authorization Request … Torsten Lodderstedt
- Re: [OAUTH-WG] JWT Secured Authorization Request … Takahiko Kawasaki
- Re: [OAUTH-WG] JWT Secured Authorization Request … Nat Sakimura
- Re: [OAUTH-WG] JWT Secured Authorization Request … Dominick Baier
- Re: [OAUTH-WG] JWT Secured Authorization Request … John Bradley
- Re: [OAUTH-WG] JWT Secured Authorization Request … Nat Sakimura
- Re: [OAUTH-WG] JWT Secured Authorization Request … Takahiko Kawasaki
- Re: [OAUTH-WG] JWT Secured Authorization Request … Justin Richer
- Re: [OAUTH-WG] JWT Secured Authorization Request … Takahiko Kawasaki
- Re: [OAUTH-WG] JWT Secured Authorization Request … Justin Richer
- Re: [OAUTH-WG] JWT Secured Authorization Request … Vladimir Dzhuvinov
- Re: [OAUTH-WG] JWT Secured Authorization Request … n-sakimura
- Re: [OAUTH-WG] JWT Secured Authorization Request … Filip Skokan
- Re: [OAUTH-WG] JWT Secured Authorization Request … Takahiko Kawasaki
- Re: [OAUTH-WG] JWT Secured Authorization Request … Justin Richer
- Re: [OAUTH-WG] JWT Secured Authorization Request … John Bradley
- Re: [OAUTH-WG] JWT Secured Authorization Request … Justin Richer
- Re: [OAUTH-WG] JWT Secured Authorization Request … John Bradley
- Re: [OAUTH-WG] JWT Secured Authorization Request … Torsten Lodderstedt
- Re: [OAUTH-WG] JWT Secured Authorization Request … Vladimir Dzhuvinov
- Re: [OAUTH-WG] JWT Secured Authorization Request … Filip Skokan
- Re: [OAUTH-WG] JWT Secured Authorization Request … Vladimir Dzhuvinov
- Re: [OAUTH-WG] JWT Secured Authorization Request … John Bradley
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Mike Jones
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… John Bradley
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Vladimir Dzhuvinov
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… John Bradley
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Vladimir Dzhuvinov
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Takahiko Kawasaki
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Vladimir Dzhuvinov
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Mike Jones
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Benjamin Kaduk
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Benjamin Kaduk
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Benjamin Kaduk
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Neil Madden
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Dominick Baier
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Neil Madden
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… John Bradley
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Neil Madden
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Benjamin Kaduk
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Nat Sakimura
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Neil Madden
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Nat Sakimura
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Joseph Heenan
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Benjamin Kaduk
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Benjamin Kaduk
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Justin Richer
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Richard Backman, Annabelle
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Jim Manico
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Richard Backman, Annabelle
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Justin Richer
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Brian Campbell
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Joseph Heenan
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Benjamin Kaduk
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Benjamin Kaduk
- Re: [OAUTH-WG] [EXTERNAL] Re: JWT Secured Authori… Neil Madden
- [OAUTH-WG] Fwd: [EXTERNAL] Re: JWT Secured Author… John Bradley
- Re: [OAUTH-WG] Fwd: [EXTERNAL] Re: JWT Secured Au… Nat Sakimura
- Re: [OAUTH-WG] JWT Secured Authorization Request … Mike Jones
- Re: [OAUTH-WG] JWT Secured Authorization Request … Joseph Heenan
- Re: [OAUTH-WG] Fwd: [EXTERNAL] Re: JWT Secured Au… Filip Skokan
- Re: [OAUTH-WG] JWT Secured Authorization Request … Brian Campbell
- Re: [OAUTH-WG] JWT Secured Authorization Request … George Fletcher
- Re: [OAUTH-WG] JWT Secured Authorization Request … Nat Sakimura
- Re: [OAUTH-WG] JWT Secured Authorization Request … Vladimir Dzhuvinov
- Re: [OAUTH-WG] JWT Secured Authorization Request … Rob Otto