Although what Nat is doing in this post is a little off topic, note that he
does have an https URL as a client id which would be disallowed by the ABNF
in A.1 below. Excluding ":" in client id definition makes sense when you
consider that client ids will often be used as a userid in HTTP Basic but
is that too restrictive in general?

On Sat, Jun 2, 2012 at 2:10 AM, Mike Jones <michael.jo...@microsoft.com>wrote:

>  Dear working group,****
>
> ** **
>
> It turns out that writing an ABNF for the Core spec pointed out that the
> syntax of a number of the OAuth protocol elements had not been previously
> defined.  (Thanks, Sean, for having us do this!)  I took a stab at
> specifying appropriate ABNF values for each of the protocol elements, but I
> would request that the working group actively review the choices in my
> proposed draft.****
>
> ** **
>
> For instance, I chose to use the same syntax definitions for username and
> password and client_id and client_secret as HTTP Basic used for userid and
> password.  Other choices were possible, such as perhaps limiting client_id
> and possibly username values to use “unreserved” characters, rather than
> allowing all characters other than “:” (as HTTP Basic did with userid).***
> *
>
> ** **
>
> Please particularly review the syntax definitions for these elements, as I
> had to make choices that went beyond the current specs to provide
> unambiguous syntax definitions:****
>
>                client_id****
>
>                client_secret****
>
>                state****
>
>                code****
>
>                access_token****
>
>                username****
>
>                password****
>
>                refresh_token****
>
> ** **
>
> The full proposed ABNF section follows.****
>
> ** **
>
>                                                             -- Mike****
>
> ** **
>
> Appendix A.  Augmented Backus-Naur Form (ABNF) Syntax****
>
> ** **
>
>    This section provides Augmented Backus-Naur Form (ABNF) syntax****
>
>    descriptions for the elements defined in this specification using the**
> **
>
>    notation of [RFC5234].  Elements are presented in the order first****
>
>    defined.****
>
> ** **
>
>    Some of the definitions that follow use the "unreserved" and "URI"****
>
>    definitions from [RFC3986], which are:****
>
> ** **
>
>    unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"****
>
>    URI        = scheme ":" hier-part [ "?" query ] [ "#" fragment ]****
>
> ** **
>
>    Some of the definitions that follow use the "b64token" syntax below,***
> *
>
>    which matches the "b64token" syntax defined by HTTP/1.1, Part 7****
>
>    [I-D.ietf-httpbis-p7-auth]:****
>
> ** **
>
>    b64token   = 1*( ALPHA / DIGIT /****
>
>                     "-" / "." / "_" / "~" / "+" / "/" ) *"="****
>
> ** **
>
> A.1.  "client_id" Syntax****
>
> ** **
>
>    The "client_id" element is defined in Section 2.3.1:****
>
> ** **
>
>    client-id     = *<TEXT excluding ":">****
>
> ** **
>
>    (This matches the "userid" definition in the HTTP Basic****
>
>    Authentication Scheme [RFC2617].)****
>
> ** **
>
> A.2.  "client_secret" Syntax****
>
> ** **
>
>    The "client_secret" element is defined in Section 2.3.1:****
>
> ** **
>
>    client-secret = *TEXT****
>
> ** **
>
>    (This matches the "password" definition in the HTTP Basic****
>
>    Authentication Scheme [RFC2617].)****
>
> ** **
>
> A.3.  "response_type" Syntax****
>
> ** **
>
>    The "response_type" element is defined in Section 3.1.1 and****
>
>    Section 8.4:****
>
> ** **
>
>    response-type = response-name *( SP response-name )****
>
>    response-name = 1*response-char****
>
>    response-char = "_" / DIGIT / ALPHA****
>
> ** **
>
> A.4.  "scope" Syntax****
>
> ** **
>
>    The "scope" element is defined in Section 3.3:****
>
> ** **
>
>    scope       = scope-token *( SP scope-token )****
>
>    scope-token = 1*( %x21 / %x23-5B / %x5D-7E )****
>
> ** **
>
> A.5.  "state" Syntax****
>
> ** **
>
>    The "state" element is defined in Section 4.1.1, Section 4.1.2,****
>
>    Section 4.1.2.1, Section 4.2.1, Section 4.2.2, and Section 4.2.2.1:****
>
> ** **
>
>    state      = 1*unreserved****
>
> ** **
>
> A.6.  "redirect_uri" Syntax****
>
> ** **
>
>    The "redirect_uri" element is defined in Section 4.1.1,****
>
>    Section 4.1.3, and Section 4.2.1:****
>
> ** **
>
>    redirect-uri      = URI****
>
> ** **
>
> A.7.  "error" Syntax****
>
> ** **
>
>    The "error" element is defined in Section 4.1.2.1, Section 4.2.2.1,****
>
>    Section 5.2, Section 7.2, and Section 8.5:****
>
> ** **
>
>    error             = 1*error-char****
>
>    error-char        = %x20-21 / %x23-5B / %x5D-7E****
>
> ** **
>
> A.8.  "error_description" Syntax****
>
> ** **
>
>    The "error_description" element is defined in Section 4.1.2.1,****
>
>    Section 4.2.2.1, Section 5.2, and Section 7.2:****
>
> ** **
>
>    error-description = 1*error-char****
>
>    error-char        = %x20-21 / %x23-5B / %x5D-7E****
>
> ** **
>
> A.9.  "error_uri" Syntax****
>
> ** **
>
>    The "error_uri" element is defined in Section 4.1.2.1,****
>
>    Section 4.2.2.1, Section 5.2, and Section 7.2:****
>
> ** **
>
>    error-uri         = URI****
>
> ** **
>
> A.10.  "grant_type" Syntax****
>
> ** **
>
>    The "grant_type" element is defined in Section 4.1.3, Section 4.3.2,***
> *
>
>    Section 4.4.1, Section 6, and Section 4.5:****
>
> ** **
>
>    grant-type = grant-name / URI****
>
>    grant-name = 1*name-char****
>
>    name-char  = "-" / "." / "_" / DIGIT / ALPHA****
>
> ** **
>
> A.11.  "code" Syntax****
>
> ** **
>
>    The "code" element is defined in Section 4.1.3:****
>
> ** **
>
>    code       = 1*unreserved****
>
> ** **
>
> A.12.  "access_token" Syntax****
>
> ** **
>
>    The "access_token" element is defined in Section 4.2.2 and****
>
>    Section 5.1:****
>
> ** **
>
>    access-token = b64token****
>
> ** **
>
> A.13.  "token_type" Syntax****
>
> ** **
>
>    The "token_type" element is defined in Section 4.2.2, Section 5.1,****
>
>    and Section 8.1:****
>
> ** **
>
>    token-type = type-name / URI****
>
>    type-name  = 1*name-char****
>
>    name-char  = "-" / "." / "_" / DIGIT / ALPHA****
>
> ** **
>
> A.14.  "expires_in" Syntax****
>
> ** **
>
>    The "expires_in" element is defined in Section 4.2.2 and Section 5.1:**
> **
>
> ** **
>
>    expires-in = 1*DIGIT****
>
> ** **
>
> A.15.  "username" Syntax****
>
> ** **
>
>    The "username" element is defined in Section 4.3.2:****
>
> ** **
>
>    username = *<TEXT excluding ":">****
>
> ** **
>
>    (This matches the "userid" definition in the HTTP Basic****
>
>    Authentication Scheme [RFC2617].)****
>
> ** **
>
> A.16.  "password" Syntax****
>
> ** **
>
>    The "password" element is defined in Section 4.3.2:****
>
> ** **
>
>    password = *TEXT****
>
> ** **
>
>    (This matches the "password" definition in the HTTP Basic****
>
>    Authentication Scheme [RFC2617].)****
>
> ** **
>
> A.17.  "refresh_token" Syntax****
>
> ** **
>
>    The "refresh_token" element is defined in Section 5.1 and Section 6:***
> *
>
> ** **
>
>    refresh-token = b64token****
>
> ** **
>
> A.18.  Endpoint Parameter Syntax****
>
> ** **
>
>    The syntax for new endpoint parameters is defined in Section 8.2:****
>
> ** **
>
>    param-name = 1*name-char****
>
>    name-char  = "-" / "." / "_" / DIGIT / ALPHA****
>
> ** **
>
> ** **
>
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth
>
>
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to