Re: [OAUTH-WG] AD review of Draft-ietf-dyn-reg

Kathleen Moriarty <> Wed, 18 February 2015 13:52 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id F3E501A8851 for <>; Wed, 18 Feb 2015 05:52:01 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Status: No, score=-2.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id iJ4aNyK37WsY for <>; Wed, 18 Feb 2015 05:51:56 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 785191A8835 for <>; Wed, 18 Feb 2015 05:51:55 -0800 (PST)
Received: by labpn19 with SMTP id pn19so1227680lab.4 for <>; Wed, 18 Feb 2015 05:51:54 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=GoQfDbjBN7xR0vl0cnj9un0RNrb3k6rJ+SqPGlDW/A8=; b=Vfr5HfCWarEkVjWZ5s1Ym4W/qIlS+ZCfqPNqpxO3GMkCvDPMiJJE5Y7jixUghUCqoG VFJ7K89rJgCSVKwQF+x71pDgVYGf3V4kU1npMcEvyYpgF6+8/UC1FIICzGxTES83Hv1m HnoKF41kd9B29PciIhgGfvn2WBZCLC4MIRq0h0fI4/XHEmNeX31dM0sql6HBq1mSq6if 1aAra+PC88b3z/o4Fu59jmZ6VhFdk1nPpU3CxEtlveyHfKU+hiAKi2bPHEChVWxXxKXi MjgoMemYCURb6mex3JCdZbCZ+9sBRvq5Kdsp3zY9PrKygDHEHQAOrD9/iYdMeqTHOkdk zH/Q==
MIME-Version: 1.0
X-Received: by with SMTP id o1mr34450870laa.56.1424267513947; Wed, 18 Feb 2015 05:51:53 -0800 (PST)
Received: by with HTTP; Wed, 18 Feb 2015 05:51:53 -0800 (PST)
In-Reply-To: <>
References: <> <> <> <> <> <>
Date: Wed, 18 Feb 2015 08:51:53 -0500
Message-ID: <>
From: Kathleen Moriarty <>
To: Phil Hunt <>
Content-Type: multipart/alternative; boundary="001a11c32d183bebc1050f5d1f70"
Archived-At: <>
Cc: "" <>
Subject: Re: [OAUTH-WG] AD review of Draft-ietf-dyn-reg
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: Wed, 18 Feb 2015 13:52:02 -0000


On Tue, Feb 17, 2015 at 7:03 PM, Phil Hunt <> wrote:

> I’m not sure if this is what Kathleen is after. I think part of the
> background in the current spec is that we were trying to differentiate from
> the large scale success stories OAuth has had in the past like Facebook and
> Google.  When you are a developer trying to build a client for IMAP, a
> standards based protocol, you can’t predict what the endpoints are in
> advance, so obviously an IMAP developer can’t obtain client_ids since they
> can’t predict the future. Nor would it be reasonable to pre-register with
> every possible email deployment in the world.

For this, I was just after improved text to clarify the definitions after
seeing the issue in the shepherd writeup and seeing it as I read the
draft.  This looks better to me and I'd like the shepherd to weigh in to
make sure he also thinks the updated definitions clarify the intent for him
as well.

Hannes, what do you think?

> NOTE:   We might want to change the terminology from “API” to application
> service or application protocol.  I know some an IETF see the word API and
> associate that exclusively with programming libraries.
> deployment organization
>       An administrative security domain under which a software API
> (service) is
>       deployed and protected by an OAuth 2.0 framework. In early OAuth
>       scenarios, the deploying organization was often the same organization
>       that published the API. In these cases the deploying organization
> can have
>      a close relationship with client software developers.  In many other
> cases,
>      the definer of the service may be an independent third-party
> publisher or
>      a standards organization. The client software developer while working
> to
>      a published specification for an API is unable to have a prior
> relationship
>      with the organization deploying the software API (service).
> software api publisher
>       The organization that defines a particular web accessible API that
>       may be deployed in one or more deployment environments.  A publisher
>       may be any standards body, commercial, public, private, or open
> source
>       organization that is responsible for publishing and distributing
>       software that may be protected via OAuth 2.0.  In some cases a
>       software API publisher and a client developer may be the same
>       organization. At the time of publication of a web accessible API,
> the software
>      publisher often does not have a prior relationship with deploying
> organizations.
>  Client Developer
>       The person or organization that builds a client software package
>       and prepares it for distribution. At the time of building the
> client, the developer
>       is often not aware of who the deploying service provider
> organizations will be.
>       Except when the software API publisher and the deploying
> organization are
>       the same, client developers will need to use dynamic registration
> when they are
>       unable to predict the deployment URLs at “compile time”.

Thank you,

> Phil
> @independentid
> > On Feb 16, 2015, at 4:43 PM, Justin Richer <> wrote:
> >
> > To Mike's last question below: I'd like Phil (and others if desired) to
> propose a clarified version of the "deployment organization", "software api
> publisher", and "client developer" if possible. With some text for that in
> hand I can tackle the rest given the feedback below.
> >
> > -- Justin
> >
> > On 2/16/2015 6:42 PM, Mike Jones wrote:
> >> A few responses and comments are inline below...
> >>
> >>> From: OAuth [] On Behalf Of Phil Hunt
> >>> Sent: Thursday, February 12, 2015 11:47 AM
> >>> To: Justin Richer
> >>> Cc:
> >>> Subject: Re: [OAUTH-WG] AD review of Draft-ietf-dyn-reg
> >>>
> >>>
> >>> Phil
> >>>
> >>> @independentid
> >>>
> >>>
> >>>
> >>> On Feb 11, 2015, at 8:31 PM, Justin Richer <> wrote:
> >>>
> >>> Kathleen, thanks for the review. Responses inline, though I'm going to
> let the other authors talk about their sections (deployment org, software
> version, etc) directly.
> >>>
> >>> On 2/11/2015 6:06 PM, Kathleen Moriarty wrote:
> >>> Thank you for your work on this draft and sorry for the delay in my
> review.  Before we progress to IETF last call, I'd like to see what we can
> resolve from the list below.   I am looking at the IPR issues to see if we
> can resolve the outstanding questions as well.
> >>>
> >>> The Shepherd report says the following:
> >>>    The document shepherd has raised concerns regarding the fuzzy
> description
> >>>    of the actors (deployment organization, software API publisher,
> client
> >>>    developer) and their impact on the protocol execution. The working
> >>>    group did not seem to worry about these aspects though.
> >>>
> >>> I can see the point after reading the draft.  The interactions are
> written much more clearly in the security considerations section than where
> the flows are described.  Can something be done to address these concerns?
> >>>
> >>> Section 1.2
> >>> Deployment Organization definition:
> >>> I highly recommend replacing the phrase "simple cloud deployment" with
> a description that accurately reflects what is intended.  If that's within
> a single service provider's network, a single data center, or a single
> hosted data center, I think it would be more clear.
> >>>
> >>> Section 1.2 nit:
> >>> Add the word "be" into the following term definition after "may":
> >>>   Software API Publisher
> >>>       The organization that defines a particular web accessible API
> that
> >>>       may deployed in one or more deployment environments.
> >>>
> >>> [deferred to original author of this text Phil et. al for better
> wording]
> >>>
> >>> [Phil] Agreed with Kathleen's suggestion.
> >> I also agree that the wording of the definitions could be clarified.
> Justin, do you want to take a first pass at this or would you like to take
> lead on this, Phil?
> >>
> >>> Section 2:
> >>>
> >>> Why isn't a more secure option offered and set as the default for
> authentication types? I know I've asked this before and the answer was just
> that you can add something to the registry, but setting HTTP Basic as the
> default seems like a really bad choice. HOBA is on it's way to becoming an
> RFC from the HTTPAuth working group.  HTTPAuth also has an updated version
> of Basic that is in IETF last call, but I know you are pointing to the
> OAuth 2.0 document, so it would be that document that gets updated and not
> this draft.  The new version of HTTP Basic fixes some internationalization
> problems and spells out the security issues much more clearly, so it
> probably doesn't matter too much to update the reference, but maybe makes
> it more clear that basic is not a secure form of authentication.
> >>>
> >>> Can you provide some justification as to why this is okay to set basic
> as the default and add that to the draft?  Section 2.3.1 of OAuth 2.0 just
> says this MUST be implemented, but that any HTTP schemes can be used.  Why
> not register another method and use that instead as the default?  You could
> use digest and there is library support.  It's not a great answer, but
> slightly better than passwords with basic.  You could register HOBA and use
> that instead, the only downside is limited library support at the moment.
> >>>
> >>> It was our intent to document the methods already defined for use with
> OAuth and provide a registration mechanism for distinguishing between them,
> not to create new client authentication mechanisms. Digest and HOBA simply
> aren't defined for use with OAuth clients yet. It would be simple to do:
> put the client id in the "username" field and the client secret in the
> "password" field of both algorithms. However, I don't believe it's a good
> idea to conflate those two goals in a single specification. We actually had
> other, more secure definitions in an earlier draft of this document (using
> a JWT signed with a private key or a JWT signed with a shared key,
> specifically), but those were removed in order to focus on solving just the
> client registration problem. I agree with that decision of the WG.
> >>>
> >>> As other methods of client authentication are defined in the OAuth
> ecosystem, they can register as valid values in the registry. I think it
> would be a valuable output of this WG to define other client authentication
> mechanisms as a separate draft or an eventual update to RFC6749 (or both?).
> >> HTTP Basic is set to the default because that's the default in RFC 6749
> and this specification is about registering clients for use with RFC 6749.
> Trying to change the RFC 6749 default really isn't within the scope of this
> work.  (If that's done, it should probably be done in an http6749-bis
> spec.)  However, the spec does define a registry that new methods like HOBA
> can be registered in when people want to use them.  (And if HOBA finishes
> before Dynamic Registration, I'm fine adding a registry entry for it in
> this spec.)
> >>
> >> If you're interested in the client_secret_jwt and private_key_jwt
> client authentication methods that Justin alluded to, these are defined in
> Section 9 of OpenID Connect Core
> >>
> >> In relation to your internationalization comments Kathleen, note that
> Section 2.3.1 of RFC 6749 explicitly provides a mechanism for encoding
> international strings for use with HTTP Basic.  This was added under the
> supervision of Julian Reschke, I believe as a result of his WGLC comments.
> So whether this is the same as what the new version of HTTP Basic does or
> not, OAuth 2.0 already does provide a standard way to use internationalized
> strings with HTTP Basic for OAuth client authentication.
> >>
> >>> Section 2: Contacts:
> >>>
> >>> I noticed privacy is not dealt with until you get to the security
> considerations section.  I'd prefer to see it with the definition, stating
> the address should be a general help address at the domain rather than
> directly to an identifiable individual.  It may be good to set a default
> for what this should be for consistency or give an example (think back to
> >>>
> >>> The problem that I see with putting it inside the definition is that
> it makes the definition text very long, as the definition sits in a list of
> other metadata items. We could add a forward pointer and an example easily
> enough, though. Or we could move the privacy considerations section up as a
> subsection here, though I don't know if that runs afoul of the RFC style
> guidelines for this new section.
> >>>
> >>>
> >>>
> >>> Software_id and software_version:
> >>> Are there any guidelines as to how these should be represented?  There
> are several specifications on software_id (and platform).  Does consistency
> here matter or is this just meant to be human readable?
> >>> Section 2.2 specifies some metadata values that are to be human
> readable, should the above be in the list?  I would expect this list to be
> comprehensive for clarity, rather than just examples since there aren't too
> many defined here.
> >>>
> >>>
> >>> [mostly deferred to Phil et. al, but note that software_id and
> software_version are not intended to be human readable and don't need the
> multi-language support]
> >> We should probably say that in the draft then.
> >>
> >>> [Phil]
> >>> I've added some more explanatory text. Note...some of this may be
> better put elsewhere.
> >>>
> >>> As to whether the values are human readable, I have no opinion. What
> matters most is unique matching.
> >>>
> >>>    software_id
> >>>       A unique identifier (e.g. UUID) assigned by the developer or
> software publisher
> >>>       used by registration endpoints to identify client software to be
> dynamically registered.
> >>>       Unlike "client_id", which is issued by the authorization server
> and varies between
> >>>       instances of software, the "software_id" SHOULD remain the same
> for all client software
> >>>       instances. The "software_id" SHOULD remain the same across
> multiple software updates
> >>>       or versions.
> >> I'd revise the last two sentences of this as follows:
> >>
> >>       Unlike "client_id", which is issued by the authorization server
> and may vary between
> >>       instances of a piece of software, the "software_id" SHOULD remain
> the same for all instances
> >>       of a piece of software. The "software_id" SHOULD remain the same
> across multiple software updates
> >>       or versions of the same piece of software.
> >>
> >>> software_version
> >>>       A version identifier for the software identified by
> "software_id".  The
> >>>       value of this field is a string that is intended to be compared
> >>>       using string equality matching. Unlike "software_id", the value
> of the
> >>>       "software_version" SHOULD change on any update to the client
> >>>       software. A service provider MAY use "software_id" and
> "software_version" to
> >>>       recognize approved software and version combinations approved
> for dynamic registration.
> >>>
> >>> Let me know if you want more background.
> >>>
> >>>
> >>> Section 3.2.1 & Privacy section
> >>> For client_name and client_id and associated information, how is user
> privacy affected and what can be done to mitigate concerns?  The definition
> should state that this is a public value and that it is specific to the
> software, not a person.  You have to get to the security consideration
> section before that is clear.  References are fine too, but some more
> information is needed in the privacy section.  I'm left with a bunch of
> questions:
> >>>   Can the client_name and client_id be tied to a person?
> >>> The client name is common across all copies of the software (usually),
> so no worries there. The ID represents an individual piece of software, not
> a person, though if that person is the sole user of the instance of
> software then I believe you're right that there are some privacy
> considerations that we should point that out. However, dynamic registration
> can actually help mitigate this as well, since in the normal case (with no
> software statements) there's no way to correlate instances of clients with
> each other.
> >>>
> >>>   Can the person be tracked by this?
> >>>   Can other information be gathered about a system (and it's user)
> during this process?
> >>> Nothing gathered about the user during registration, as this happens
> in the back channel outside the user's purview.
> >>>
> >>>   The information is used to dynamically register clients, what is
> logged?
> >>>   What data is aggregated?
> >>>   What can you tell about a client (time, location, travel, other
> personal details that may be considered sensitive)?  I don't think this was
> covered in the OAuth 2.0 RFC.
> >>>   How is this addressed at the authorization server and other points?
> >>>   The Security considerations talks about client_id as being short
> lived, so they expire, but are these event logged or is that prohibited?
> >>>
> >>> Many of these questions seem to be completely dependent on the
> implementation of the authorization server, and I'm not really sure how (or
> if) to address them in this draft. Any suggestions would be welcomed here.
> >>>
> >>> The client_id *could* be short lived, but they usually aren't. I don't
> see any particular logging or tracking concerns using a dynamic OAuth
> client above using any other piece of software, ever. As such, I don't
> think it requires special calling out here.
> >>>
> >>>
> >>>
> >>> 5. Security considerations
> >>> The first paragraph is a repeat of text.  Can this just be in one
> place and use a pointer to the full text?  I like the requirement, but
> reading it once is enough.
> >>>
> >>> I think it was less onerous of a repeat when both simply said "use
> TLS", so some refactoring after the expansion of the text makes sense to
> me. Would it be better to have it upfront in the endpoint definition, or in
> the security considerations?
> >> Justin, do you want to make specific rewording proposals for this and
> the other editorial issues that were identified?
> >>
> >>> --
> >>>
> >>> Best regards,
> >>> Kathleen
> >>>
> >>> Thanks again for your review!
> >>>
> >>>  -- Justin
> >>                              Thanks all,
> >>                              -- Mike
> >>
> >
> _______________________________________________
> OAuth mailing list


Best regards,