Shepherd writeup

Shepherd Write-Up for "Proof Key for Code Exchange by OAuth Public Clients"

(1) What type of RFC is being requested (BCP, Proposed Standard,
Internet Standard, Informational, Experimental, or Historic)?  Why
is this the proper type of RFC?  Is this type of RFC indicated in the
title page header?

This specification is proposed as a 'Standards Track' document. The 
type of RFC is indicated and the specification defines new OAuth 
protocol parameters. 

(2) The IESG approval announcement includes a Document Announcement
Write-Up. Please provide such a Document Announcement Write-Up. Recent
examples can be found in the "Action" announcements for approved
documents. The approval announcement contains the following sections:

Technical Summary

   OAuth 2.0 public clients utilizing the Authorization Code Grant 
   are susceptible to the authorization code interception attack.  
   This specification describes the attack as well as a technique 
   to mitigate against the threat.

Working Group Summary

  The working group last call for this document was started 
  soon after the document was adopted as a WG item. A substantial
  number of comments were received and the subsequent document 
  versions addressed those comments. No difficult decisions
  had to be made by the chairs or the group. 

Document Quality

  Are there existing implementations of the protocol? Have a 
  significant number of vendors indicated their plan to 
  implement the specification? Are there any reviewers that 
  merit special mention as having done a thorough review, 
  e.g., one that resulted in important changes or a 
  conclusion that the document had no substantive issues? If 
  there was a MIB Doctor, Media Type or other expert review, 
  what was its course (briefly)? In the case of a Media Type 
  review, on what date was the request posted?

PingIdentity, Google, and Deutsche Telekom have implementations 
of the plain code challenge method. 

The documentation of the PingIdentity implementation can be 
found at

The open source phpOIDC implementation contains code for the 
S256 and the plain code challenge methods. 


  Who is the Document Shepherd? Who is the Responsible Area

Hannes Tschofenig is the document shepherd and the responsible area 
director is Kathleen Moriarty. 

(3) Briefly describe the review of this document that was performed by
the Document Shepherd.  If this version of the document is not ready
for publication, please explain why the document is being forwarded to
the IESG.

The document shepherd was involved in the working group review process
and verified the document for correctness.

(4) Does the document Shepherd have any concerns about the depth or
breadth of the reviews that have been performed?  

There are no concerns regarding the document reviews. 

(5) Do portions of the document need review from a particular or from
broader perspective, e.g., security, operational complexity, AAA, DNS,
DHCP, XML, or internationalization? If so, describe the review that
took place.

The document contains ABNF. As noted at the end of this shepherd
write-up there might be an issue with the ABNF syntax in the document. 

During the review an issue surfaced regarding the incorrect use of 
ABNF in various OAuth specifications. This issue was raised on the 
OAuth mailing list:

Review from an ABNF expert would be desirable. 

(6) Describe any specific concerns or issues that the Document Shepherd
has with this document that the Responsible Area Director and/or the
IESG should be aware of? For example, perhaps he or she is uncomfortable
with certain parts of the document, or has concerns whether there really
is a need for it. In any event, if the WG has discussed those issues and
has indicated that it still wishes to advance the document, detail those
concerns here.

The document shepherd has no concerns with the document. 

(7) Has each author confirmed that any and all appropriate IPR
disclosures required for full conformance with the provisions of BCP 78
and BCP 79 have already been filed. If not, explain why.

The authors have confirmed full conformance with the provisions of BCP 78
and BCP 79: 

Nat Sakimura:
John Bradley:
Naveen Agarwal: 

(8) Has an IPR disclosure been filed that references this document?
If so, summarize any WG discussion and conclusion regarding the IPR

No IPR disclosures have been filed for this document. 

(9) How solid is the WG consensus behind this document? Does it 
represent the strong concurrence of a few individuals, with others
being silent, or does the WG as a whole understand and agree with it?   

There is solid consensus in the working group for publishing this 
document. This specification addresses a security vulnerability 
found in the wild. 

(10) Has anyone threatened an appeal or otherwise indicated extreme 
discontent? If so, please summarise the areas of conflict in separate
email messages to the Responsible Area Director. (It should be in a
separate email because this questionnaire is publicly available.) 

Nobody threatened an appeal or expressed extreme discontent. 

(11) Identify any ID nits the Document Shepherd has found in this
document. (See and the Internet-Drafts
Checklist). Boilerplate checks are not enough; this check needs to be

The shepherd checked the document. 

(12) Describe how the document meets any required formal review
criteria, such as the MIB Doctor, media type, and URI type reviews.

No formal review is needed. 

(13) Have all references within this document been identified as
either normative or informative?

Yes. The references are split into normative and informative references. 

(14) Are there normative references to documents that are not ready for
advancement or are otherwise in an unclear state? If such normative
references exist, what is the plan for their completion?

All normative references are published RFCs. 

(15) Are there downward normative references references (see RFC 3967)?
If so, list these downward references to support the Area Director in 
the Last Call procedure. 

The specification has a normative dependency on an informational RFC, 
namely "US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)" 
(RFC 6234). This is a downward reference. 

We reference RFC 20 for the ASCII syntax and that RFC does not have a
status. Maybe there is another reference that could be used instead. 

(16) Will publication of this document change the status of any
existing RFCs? Are those RFCs listed on the title page header, listed
in the abstract, and discussed in the introduction? If the RFCs are not
listed in the Abstract and Introduction, explain why, and point to the
part of the document where the relationship of this document to the
other RFCs is discussed. If this information is not in the document,
explain why the WG considers it unnecessary.

This document does not change the status of an existing RFC. 

(17) Describe the Document Shepherd's review of the IANA considerations
section, especially with regard to its consistency with the body of the
document. Confirm that all protocol extensions that the document makes
are associated with the appropriate reservations in IANA registries.
Confirm that any referenced IANA registries have been clearly
identified. Confirm that newly created IANA registries include a
detailed specification of the initial contents for the registry, that
allocations procedures for future registrations are defined, and a
reasonable name for the new registry has been suggested (see RFC 5226).

This document allocates three new parameters to the existing OAuth 
parameter registry (see Section 6.1) and creates a new registry 
called 'PKCE Code Challenge Method' registry. This document adds 
two values to the PKCE Code Challenge Method registry, as defined 
in Section 6.2.2.

The IANA consideration section correspond to the body of the document. 
(18) List any new IANA registries that require Expert Review for future
allocations. Provide any public guidance that the IESG would find
useful in selecting the IANA Experts for these new registries.

The 'PKCE Code Challenge Method' registry requires expert review. 
Selecting experts from the OAuth working group might be useful. 

(19) Describe reviews and automated checks performed by the Document
Shepherd to validate sections of the document written in a formal
language, such as XML code, BNF rules, MIB definitions, etc.

The document shepherd used 'Bill's ABNF Parser' to verify the 
included ABNF code. I get an error from 'Bill's ABNF Parser'. 
The tool complains about the use of the "_" in the code_verifier label.

It turns out that this is not an allowed token in ABNF as defined in RFC
5234 (at least that's my current understanding).

Since we have been using the "_" character in labels in various 
parameters in OAuth there is nothing that can be done at this 
point in time. 

The shepherd suggests to ask ABNF experts whether this observation
is actually correct. If incorrect, then there is no problem. 

The specification also contains C# code in the appendix. The shepherd 
has verified the code against the provided example.