On 12/02/13 14:43, Tim Bray wrote:
?! /foo and /foo/bar are obviously distinct endpoints.

definitely yes from the client's point of view, at the implementation level - it is the internal detail, right ?

Cheers, Sergey


On Feb 12, 2013 3:25 AM, "Sergey Beryozkin" <sberyoz...@gmail.com
<mailto:sberyoz...@gmail.com>> wrote:

    Hi Mike,
    On 12/02/13 01:26, Mike Jones wrote:

        At most, there should be two endpoints - creation and management
        - for a client, but the protocol should be structured such that
        they *can* be at the same URL, if the server so chooses.  A
        simple way to accomplish this is to require that the client_id
        value be provided as an input parameter on update operations.
          Then for implementations that use a single endpoint, they can
        distinguish "create" and "update" operations on the management
        endpoint by the presence or absence of the client_id value.

    Perhaps the text can be relaxed somehow to not refer to

    /register
    and
    /register/{client_id}

    as two different endpoints ? I think it is a single endpoint from
    the implementation point of view :-).

    Or may be the spec can indeed be relaxed a bit and allow for a PUT
    form payload be sent directly to /register

    Cheers, Sergey

        If you want to have separate endpoints and don't need the
        client_id because you have somehow encoded it into the
        management endpoint URL, that's fine.  It still can serve as a
        useful cross-check that the client (or an attacker) is
        requesting a change to a client that matches the bearer token
        used.  But including it is necessary for implementations that
        want to use a single registration endpoint, rather than having a
        proliferation of per-client endpoints.

        BTW, just for the record, OAuth 2.0 uses the same endpoint for
        initial access token requests and requests for refreshed access
        tokens - with the operations being distinguished by whether a
        refresh_token parameter is present.  So there's a useful OAuth
        precedent for doing things this way.

                                         -- Mike

        -----Original Message-----
        From: oauth-boun...@ietf.org <mailto:oauth-boun...@ietf.org>
        [mailto:oauth-boun...@ietf.org
        <mailto:oauth-boun...@ietf.org>__] On Behalf Of Justin Richer
        Sent: Monday, February 11, 2013 1:15 PM
        To: oauth@ietf.org <mailto:oauth@ietf.org>
        Subject: [OAUTH-WG] Registration: Endpoint Definition (&
          operation parameter)

        Draft -05 of OAuth Dynamic Client Registration [1] defines three
        fundamental operations that a client can undertake: Client
        Registration, Client Update, and Secret Rotation. Each of these
        actions needs to be differentiated *somehow* by the client and
        server as part of the protocol. Draft -00 defined only the
        "register" operation, drafts -01 through -04 made use of an
        "operation" parameter on a single endpoint, which brought up a
        long discussion on the list on whether or not that was an
        appropriate design. Draft -05 did away with the definition of
        the "operation" parameter on a single endpoint and instead opted
        for separating the base functionality into three different
        endpoints.

        Pro:
            - Closer to RESTful semantics of having one URL for creation
        and another URL for management of an item (eg, most REST APIs
        use /object for creation and /object/object_id for manipulation)
            - The rest of OAuth (and its extensions) defines separate
        endpoints for different actions (Authorization, Token,
        Revocation, Introspection) as opposed to a single endpoint with
        a mode-switch parameter
            - Client doesn't have to generate a URL string for different
        endpoints by combining parameters with a base URL

        Con:
            - Not quite exactly RESTful as the spec doesn't dictate the
        client_id
        be part of the update or rotate URL (though and implementor's note
        suggests this)
            - Client has to track different URLs for different actions
            - Server must be able to differentiate actions based on these
        different URLs.

        Alternatives include using different HTTP verbs (see other
        thread) or
        defining an operational switch parameter, like older drafts, on
        a single
        endpoint URL. Another suggested alternative is to look for the
        presence
        of certain parameters, such as client_id or the registration access
        token, to indicate that a different operation is requested.

        There's also question of whether the Secret Rotation action needs to
        have its own endpoint, or if it can be collapsed into one of the
        others.
        It has been suggested off-list that the secret rotation should
        never be
        initiated by the Client but instead the client should simply
        request its
        latest secret from the server through the update (or read)
        semantics.

            -- Justin

        [1] http://tools.ietf.org/html/__draft-ietf-oauth-dyn-reg-05
        <http://tools.ietf.org/html/draft-ietf-oauth-dyn-reg-05>
        _________________________________________________
        OAuth mailing list
        OAuth@ietf.org <mailto:OAuth@ietf.org>
        https://www.ietf.org/mailman/__listinfo/oauth
        <https://www.ietf.org/mailman/listinfo/oauth>
        _________________________________________________
        OAuth mailing list
        OAuth@ietf.org <mailto:OAuth@ietf.org>
        https://www.ietf.org/mailman/__listinfo/oauth
        <https://www.ietf.org/mailman/listinfo/oauth>


    _________________________________________________
    OAuth mailing list
    OAuth@ietf.org <mailto:OAuth@ietf.org>
    https://www.ietf.org/mailman/__listinfo/oauth
    <https://www.ietf.org/mailman/listinfo/oauth>



_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to