Allocation Token Extension for the Extensible Provisioning Protocol (EPP)
RFC 8495

Note: This ballot was opened for revision 09 and is now closed.

Adam Roach Yes

Ignas Bagdonas No Objection

Deborah Brungard No Objection

Ben Campbell No Objection

Comment (2018-08-15 for -09)
No email
send info
Substantive Comments:

- General:

As far as I can tell, the document doesn't explain what an Allocation Token _is_. It talks about how it is used and what it contains, but I'm not sure what one represents semantically, or how it gets created, destroyed, etc. I see Section 7 mentions that Allocation Tokens are defined elsewhere; is there something that can be referenced? If not, would it be reasonable to add a high level summary to the introduction?

§3.1.1: "Availability of allocation.example and allocation2.example
domain names are based on the Allocation Token ’abc123’"

I'm confused by this, since the example shows a "mismatch" result for allocation.example.

§3.2.1, 2nd paragraph:

I'm confused by the idea of a token mismatch for an object that has not yet been created. (Please see my general comment; some discussion of the lifecycle of allocation tokens would be helpful.)

Editorial Comments:

§1.1, last paragraph: The "REQUIRED" seems like a statement of fact.

§3.1.1: "If an object requires an Allocation Token and the Allocation
       Token does not apply to the object or an object does not require
       an Allocation Token..."
That's hard to parse. Please consider separate cases for "required but does not apply" and "not required".

Alissa Cooper No Objection

Comment (2018-08-15 for -09)
No email
send info
BCP 14 can be referenced in the usual way, it doesn't need a URL reference.

Benjamin Kaduk (was Discuss) No Objection

Comment (2018-08-31 for -10)
No email
send info
Thank you for resolving my DISCUSS points.  Original COMMENT section preserved below.

(section-by-section)

Section 1

   A client MUST pass an Allocation Token known to the server to be
   authorized to use one of the supported EPP transform commands.  It is
   up to server policy which EPP transform commands and which objects
   require the Allocation Token.

The language could probably be tightened up for greater clarity about when
the MUST applies, and perhaps be consistent about "supported" vs. "require"
between sentences.

Section 1.1

   represents lines returned by a protocol server.  Indentation and
   white space in examples are provided only to illustrate element
   relationships and are not a REQUIRED feature of this protocol.

It would be nice to rephrase this so that "NOT REQUIRED" could be
together/majuscule.  Maybe, "to illustrate element relationships and
implementations are NOT REQUIRED to adhere to such whitespace and
formatting"?

   The XML namespace prefix "allocationToken" is used for the namespace
   "urn:ietf:params:xml:ns:allocationToken-1.0", but implementations
   MUST NOT depend on it and instead employ a proper namespace-aware XML
   parser and serializer to interpret and output the XML documents.

Maybe I'm misunderstanding, but isn't this kind-of inviting sloppy
implementations that don't check?  Sometimes we say things like "this
prefix is used in the examples for concision but actual usage is expected
to vary between fully scoped and shortened versions".

Section 3.1.1

   2.  If an object requires an Allocation Token and the Allocation
       Token does not apply to the object or an object does not require
       an Allocation Token, then the server SHOULD return the
       availability status as unavailable (e.g., "avail" attribute is
       "0" or "false").
It's really unclear why these two cases are not distinguished in a
machine-readable way (i.e., not the text of the reason).  (Also in 3.2.4,
etc.)

Section 3.1.2

   [...] Authorized clients MAY retrieve
   the Allocation Token (Section 2.1) along with the other object
   information using the <allocationToken:info> element. [...]

The causality here is a bit weird; it seems like the client is requesting
to retrieve the token by including <allocationToken:info> in its request so
that the server knows to include it in the response (where it is retrieved
from an <allocationToken:allocationToken> element).

   If the query was successful, the server replies with an
   <allocationToken:allocationToken> element, as described in
   Section 2.1.

Section 2.1 describes the contents of the element, not how the server
replies with it.  Maybe, "interpreted as described in" would be better?

Section 3.1.3

It would probably be good to have some discussion of why the <transfer>
query command (as opposed to transform command) does not benefit from
having this additional authorization-checking mechanism.

Section 3.2.1

   The EPP <create> command provides a transform operation that allows a
   client to create an instance of an object.  In addition to the EPP
   command elements described in an object mapping like [RFC5731], the
   command MUST contain a child <allocationToken:allocationToken>

This MUST is only for the cases when an allocation token is to be used,
right?  (Similarly in 3.2.4, etc.)

   element for the client to be authorized to create and allocate the
   object.  If the Allocation Token does not apply to the object, the
   server MUST return an EPP error result code of 2201.

nit: Maybe "supplied Allocation Token"?

Section 3.2.2, 3.2.3, 3.2.5

Similarly to for Section 3.1.3, some text on why the additional
authorization is not useful would be helpful.

Section 4.1

     <annotation>
       <documentation>
         Extensible Provisioning Protocol v1.0
         Allocation
         Token Extension.
       </documentation>
     </annotation>

nit: are this many line breaks needed?


I also question the minLength of 1 for an allocation token value.
Why couldn't it be more like 16 or even 32?  I would put this in the
DISCUSS section but maybe there are mitgating circumstances I'm unaware of.

Suresh Krishnan No Objection

Warren Kumari No Objection

Comment (2018-08-15 for -09)
No email
send info
I agree with Ben and Alexey (and others) that it would be helpful for the document to be clearer in the introduction about the motivations (what and why) this is being done.

Also, thanks to Al Morton for the OpsDir review.

Mirja Kühlewind No Objection

Comment (2018-08-06 for -09)
No email
send info
Two quick questions (and I'm really no expert here, so these questions might be stupid): 

1) Why should the check return 'unavailable' if the object does not require an Allocation Token but the check is send with an Allocation Token (sec 3.1.1)? Is that obvious to everybody else but me or should that maybe be further explained in the doc? And inline with that, why is it not a MUST to return 'unavailable' if a Token is required but the sent token doesn't match?

2) Why is this mechanism not applied to delete, renew, and update?

Alexey Melnikov No Objection

Comment (2018-08-14 for -09)
No email
send info
I am looking forward to reading answers to Mirja's questions.

I think the Introduction section can be improved in explaining how allocation token is used and why it is needed.

Eric Rescorla (was Discuss) No Objection

Comment (2018-08-22 for -10)
No email
send info
Thank you for addressing my DISCUSS

Alvaro Retana No Objection

Martin Vigoureux No Objection