Re: [OAUTH-WG] Call for Adoption

Mike Jones <> Fri, 22 January 2016 23:32 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 553FF1ACD27 for <>; Fri, 22 Jan 2016 15:32:50 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.001
X-Spam-Status: No, score=-2.001 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id N2qZhrCmfBsV for <>; Fri, 22 Jan 2016 15:32:44 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 672B71ACD18 for <>; Fri, 22 Jan 2016 15:32:43 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=selector1; h=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=bunXQUC0TMOOLXIsozBWupUhdoThgowAXZRD1A3YEB0=; b=RCaTdsBhjBnc5ul7tV8ya1rO18H+CFNuQSVKiieIBirle+71kJeH/W2wn8c3GDMa4ZVk2CzHug1m/1N4Wxr/H5eTuDVZb/Xi8jKSLVMu7uPszc29IApllwWc5Its+EIF4YwtPmgeVBpPdqyxrPzVPIYPuTrgXA663sJJgk/sQrU=
Received: from ( by ( with Microsoft SMTP Server (TLS) id 15.1.365.19; Fri, 22 Jan 2016 23:32:39 +0000
Received: from ([]) by ([]) with mapi id 15.01.0365.024; Fri, 22 Jan 2016 23:32:39 +0000
From: Mike Jones <>
To: Brian Campbell <>, Nat Sakimura <>
Thread-Topic: [OAUTH-WG] Call for Adoption
Date: Fri, 22 Jan 2016 23:32:39 +0000
Message-ID: <>
References: <> <> <> <> <> <> <> <> <> <> <> <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
authentication-results: spf=none (sender IP is );
x-originating-ip: [2001:4898:80e8:3::650]
x-ms-office365-filtering-correlation-id: 140ad65b-1703-4eb8-9cab-08d323845142
x-microsoft-exchange-diagnostics: 1; BY2PR03MB442; 5:eYv+9aPPBeR3tk7sb6wbymAmwxhTTFMbC1rJ9PC42G5l2VfWW/fUyQES+EHwVoDMd0rmyS7UmJbpLO/Om1W+5E+MS+IVPqCOj+TkqZZoJwhVwN6j3vaag7StnXu30GG4EaJGiOz9qsHyBZwoQLpzEA==; 24:lH6hoEb56BZSAvzRjUx1madwXVFHWdCLjEqfnDcky6c4VcOFA/daXYmgB4hx48LSWvPNvUX678oQB02GIJV10/Yy9QN/c+C8jHv+t1EM0kQ=
x-exchange-antispam-report-test: UriScan:; BCL:0; PCL:0; RULEID:; SRVR:BY2PR03MB442; UriScan:;
x-microsoft-antispam-prvs: <>
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(61425038)(601004)(2401047)(8121501046)(520078)(5005006)(3002001)(10201501046)(61426038)(61427038); SRVR:BY2PR03MB442; BCL:0; PCL:0; RULEID:; SRVR:BY2PR03MB442;
x-forefront-prvs: 08296C9B35
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(24454002)(189002)(479174004)(199003)(52314003)(53754006)(377454003)(99286002)(16236675004)(5005710100001)(1096002)(5008740100001)(1220700001)(86612001)(586003)(102836003)(790700001)(6116002)(86362001)(76576001)(8990500004)(19617315012)(10400500002)(10290500002)(97736004)(93886004)(106356001)(10090500001)(106116001)(81156007)(105586002)(19609705001)(5001960100002)(5001770100001)(189998001)(74316001)(54356999)(19580405001)(561944003)(19580395003)(101416001)(87936001)(50986999)(19625215002)(33656002)(76176999)(19300405004)(5003600100002)(4326007)(5004730100002)(92566002)(2906002)(11100500001)(5002640100001)(122556002)(2900100001)(77096005)(15975445007)(40100003)(2950100001)(3826002)(579004); DIR:OUT; SFP:1102; SCL:1; SRVR:BY2PR03MB442;; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en;
received-spf: None ( does not designate permitted sender hosts)
spamdiagnosticoutput: 1:23
spamdiagnosticmetadata: NSPM
Content-Type: multipart/alternative; boundary="_000_BY2PR03MB4422882B74ED659DB47CECDF5C40BY2PR03MB442namprd_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Jan 2016 23:32:39.3003 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR03MB442
Archived-At: <>
Cc: "<>" <>
Subject: Re: [OAUTH-WG] Call for Adoption
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: OAUTH WG <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 22 Jan 2016 23:32:50 -0000

I like the “from which the authorization server's configuration information location can be derived” language.  Thanks.  I’ll plan to incorporate that the next time the draft is revised.

                                                                -- Mike

From: Brian Campbell []
Sent: Friday, January 22, 2016 3:26 PM
To: Nat Sakimura <>
Cc: Mike Jones <>; Justin Richer <>; <> <>
Subject: Re: [OAUTH-WG] Call for Adoption

I agree that the language describing OAuth issuer could and should be improved. The text now reads like it is the exact and full URL where the metadata/discovery document is located. Perhaps something more like "the URL from which the authorization server's configuration information location can be derived" and explain that adding the .well-known bits to the issuer is where the configuration information can actually be found.

On Thu, Jan 21, 2016 at 7:07 PM, Nat Sakimura <<>> wrote:
Re: iss. I discussed this a bit with Nov in more details. It probably is a sloppy language of the specs that is making it difficult to read what you wanted to achieve.

In mix-up-mitigation draft, OAuth issuer is "the URL of the authorization server's configuration information location". In OAuth discovery draft, there is something called "OAuth 2.0 Configuration Information Location URL", which is equal to "OpenID Connect Issuer".

When I wrote the statement, I thought you were pointing to the URL that you can actually pull the configuration information by "the URL of the authorizaiton server's configuration information location" since otherwise you would have used the term "OAuth 2.0 Configuration Information Location URL". But after all, you probably meant these two are the same. Then I would strongly recommend to fix the language.

Now, even If that is the case, the relationship like
·         iss + .well-know/openid-configuration = Connect OP config endoint
·         OAuth config endpoint - .well-known/openid-configuration = OAuth iss
is very confusing.

You also claim that your approach is simpler, but to me, your approach seem to be overly complex. It requires discovery and the check for the value of the discovered config information to work as the mitigation. (Right. Draft -01 does not have it, so it does not solve the mix-up issue.) With oauth-meta, you do not need it.

Finally, your point that HATEOAS reminds you of WSDL, it is not. If you want to have something similar to WSDL in REST API area, it is Swagger. (Actually, it is gaining a lot of momentum recently, but that's beside the fact ;-). And the point here is not the format but the fact that we need to have a way to associate metadata to the data. The root cause of this mix-up attack is that the metadata and data is not associated properly. We have a standard way of associating the data and metadata with link-rel such as RFC5988 so why not use it? Link-rel-href pattern is used a lot now. Most modern web pages actually have it. Using a proper way to associate metadata with data will save you from a lot of other attacks in the future. Instead of doing patch works, we should solve it architecturally.


2016年1月22日(金) 10:34 Mike Jones <<>>:
Nat, I’m confused by this statement in the message you reference “Unfortunately, this does not match the value of OAuth issuer defined in Section 2 of draft-jones-oauth-mix-up-mitigation-01 nor the 'iss' returned as specified in 3.1. As such, validation as specified in bullet 1 of Section 4 fails in Google's case -- OR it means that the document is internally inconsistent.”.  The issuer definition in draft-jones-oauth-discovery is 100% compatible with the one in OpenID Connect Discovery, by design.  In the Google example, both the OpenID issuer and the OAuth issuer values would be the string “”.  What is the inconsistency that you perceive?

The discussion of the duplication problem happened in the private meetings in Yokohama.

I will admit, in Yokohama, I didn’t speak up in the public meetings to point out that a simpler alternative to oauth-meta was already being discussed there in private, because then I would have had to talk about the security issues, which we’d decided not to publicly do at that point.  So I stayed silent during the poll, out of politeness.  Perhaps I should have found a way to say something then anyway, but that’s water under the bridge now.

Finally, for what it’s worth, the HATEOAS stuff reminds me far too much of Web Services Description Language (WSDL) – part of the complexity baggage that helped sink Web Services.  The use of “link rel” to define an interaction vocabulary and publish endpoints for that vocabulary seems pretty baroque and reminiscent of “microformats” – another cute “Webby” innovation that never caught on.  The industry has pretty much voted with its feet and is using JSON for publishing discovery data structures – not “link rel”.  I am against us reverting to the “link rel” proposal from 2008 that never caught on when JSON is simpler and does a better job.

                                                                -- Mike

From: Nat Sakimura [<>]
Sent: Thursday, January 21, 2016 6:24 AM
To: Justin Richer <<>>; Mike Jones <<>>
Cc: William Denniss <<>>; <<>> <<>>

Subject: Re: [OAUTH-WG] Call for Adoption


You just criticize my draft. That's ok, but I would really like to get some response to my questions stated in . To me, it just does not seem to work, and the combination of the oauth-meta and PKCE seems to be much more elegan, nicer, and much simpler to implement. If you just give up the dynamic response at the authorization endpoint, then you even do not have to touch the code but just change a config file.

Please convince me by answering to my questions.

For the record of Yokohama, I do not recall much about duplication in OAuth session. The poll in the room was 19 for / zero against / 4 persons need more information. Indeed, it is not duplicating much. And if you move to a new model without pre-configured discovery, it is not duplicating any but the resource endpoint URI, which is optional and is for the cases where the client did not know the concrete resource endpoint to start with.

I understand your usecases always start from a concrete endpoint location. Mine do not. In a four party model, it is likely not. The user just want to have the service to fetch his data from some resource endpoint. He just hits the service. He does not hit the resource endpoint directly. For example, in the case of a consumer using a personal finance platform (PFP)to manage his pension fund, he hits the PFP and not the Pension fund. Assuming that the pension fund has delegated the authorization control to the authorization server, then, the authorization server should return both the access token and the endpoint of the pension fund so that the PFP can pull the data using them. A similar model holds for personal health service and health care providers.



2016年1月21日(木) 21:18 Justin Richer <<>>:
Convergence is exactly what I’m arguing for, though. These things ought to work together.

 — Justin

On Jan 21, 2016, at 2:55 AM, Mike Jones <<>> wrote:

My memory of the discussions of the oauth-meta draft in Yokohama were that many people felt that it was unnecessarily dynamically duplicating a lot of information that the client already had.  Most of us that were aware of the attacks then were in favor of a more targeted, minimal approach.  You were listened to in Yokohama, but that didn’t necessarily mean that people agreed with the approach.  Participants were already aware of the oauth-meta proposal in Darmstadt but no one spoke up in favor of it that I can recall.  Rather, I think people were thinking that “less is more”.

There have also been discussions in the last day about how dynamically returning a resource URL, which oauth-meta does, is both unnecessary (since the client initiated the resource authorization already knowing what resource it wants to access) and often problematic, since many authorization servers can authorize access to multiple resources.  If anything, the client should be telling the authorization server what resource it wants to access – not the other way around.

I’m not saying that there aren’t some good ideas in the oauth-meta draft – I’m sure there are, just as there are in the approach designed by the participants in Darmstadt.  While I volunteered to write the first draft of the mix-up-mitigation approach, it really reflects something a lot of people have already bought into – as evidenced in the passion in the high-volume “Mix-Up About The Mix-Up Mitigation” thread, and not just my personal project.

If you think there are things missing or wrong in the mix-up-mitigation draft, please say what they are.  That will help us quickly converge on a solution that will work for everyone.

                                                          -- Mike

From: Nat Sakimura []
Sent: Wednesday, January 20, 2016 11:17 PM
To: Mike Jones <<>>; William Denniss <<>>; Justin Richer <<>>
Subject: Re: [OAUTH-WG] Call for Adoption

Hi Mike.

Conversely, I would like to ask why this approach does not work for Mix-up attack. As Nov stated, we in fact have discussed the approach in quite a length back in Yokohama. I really would like to know why it does not work.

Besides, for oauth-meta approach, mix-up attack is only one of the thing it solves.

Nat Sakimura

2016年1月21日(木) 16:02 Mike Jones <<>>:
Not to be negative, but I disagree with adopting draft-sakimura-oauth-meta.  We should define and promote one mitigation approach to the mix-up attacks.  Having two would confuse implementers and cause compatibility problems – reducing overall security.

The approach defined in draft-jones-oauth-mix-up-mitigation was created in collaboration with the security researchers who identified the problems in the first place, was vigorously discussed in the security meeting Hannes and Torsten held in Darmstadt, and has been since refined based on substantial input from the working group.  And at least three implementers have already stated that they’ve implemented it.  I’m not saying that it’s, but if there are things missing or things that need to be improved in our approach, we should do it there, rather introducing a competing approach.

Also, standard OAuth deployments register the client and then use the information gathered at registration time for subsequent protocol interactions.  They do not need all the configuration information for the authorization server to be retransmitted at runtime.  The oauth-meta draft goes too far in that direction, at least as I see it.  Returning things two ways creates its own problems, as discussed in the Duplicate Information Attacks security considerations section (7.2) of the mix-up-mitigation draft.

I’ll note that the mix-up-mitigation approach is compatible with existing practice in both static and dynamic metadata discovery.  Replying to Justin’s comment that “It's the pre-configured discovery document that's at the root of the mix-up attack in the first place” – this is not the case.  The attacks can be performed without either discovery or dynamic registration.

I would be interested in hearing a technical discussion on whether there are aspects of the oauth-meta approach that mitigate aspects of the attacks that the mix-up-mitigation approach does not.  That could help inform whether there are additional things we should add to or change in the mix-up draft.

                                                          -- Mike

From: OAuth [<>] On Behalf Of William Denniss
Sent: Wednesday, January 20, 2016 10:37 PM
To: Justin Richer <<>>
Subject: Re: [OAUTH-WG] Call for Adoption

+1 to adopt this, and I agree with Justin's comments.

On Wed, Jan 20, 2016 at 9:53 PM, Justin Richer <<>> wrote:

Inline discovery and pre-configured discovery (ie, .well-known) should at the very least be compatible and developed together. It's the pre-configured discovery document that's at the root of the mix-up attack in the first place.

 -- Justin

On 1/19/2016 10:30 PM, Nat Sakimura wrote:
Just to give more context, at IETF 94, I have done a presentation on discovery.

According to the minutes,

    (f) Discovery (Nat)

             Nat explains his document as an example of the work that has to be done

             in the area of discovery, which is a topic that has been identified

             as necessary for interoperability since many years but so far there

             was not time to work on it. Mike, John and Nat are working on a new

             document that describes additional discovery-relevant components.

             Poll: 19 for / zero against / 4 persons need more information.

The document discussed there was This is a simple (only 1-page!) but a very powerful document that nudges towards HATEOAS which is at the core of RESTful-ness. It also mitigates the Mix-up attack without introducing the concept of issuer which is not in RFC6749. It is also good for selecting different endpoints depending on the user authentication and authorization results and more privacy sensitive than pre-announced Discovery document. It also allows you to find to which protected resource endpoint you can use the access token against.

In the last sentence of the minutes, it talks about "a new document that describes additional discovery-relevant components". This is  It went for the call for adoption. However, it is only a half of the story. I believe that was discussed at IETF 94 and had support there should be adopted as well.

Nat Sakimura

2016年1月20日(水) 12:05 Nat Sakimura <<>>:
Thanks Hannes.

I did not find, which was discussed in Yokohama, and was largely in agreement if my recollection is correct. Why is it not in the call for adoption?

2016年1月19日(火) 20:39 Hannes Tschofenig <<>>:
Hi all,

we have submitted our new charter to the IESG (see and
since some IESG members like to see an updated list of milestones as
well. For this reason, based on a suggestion from Barry, we are also
starting a call for adoption concurrently with the review of the charter
text by the IESG.

We will post separate mails on the individual documents. Your feedback
is important! Please take the time to look at the documents and provide
your feedback.

Hannes & Derek

OAuth mailing list<>


OAuth mailing list<>

OAuth mailing list<>

OAuth mailing list<>

OAuth mailing list<>