Re: [Txauth] Polymorphism (Was: JSON Schema?)

Dick Hardt <dick.hardt@gmail.com> Wed, 08 July 2020 16:55 UTC

Return-Path: <dick.hardt@gmail.com>
X-Original-To: txauth@ietfa.amsl.com
Delivered-To: txauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D08113A0F46 for <txauth@ietfa.amsl.com>; Wed, 8 Jul 2020 09:55:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.096
X-Spam-Level:
X-Spam-Status: No, score=-2.096 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_FONT_LOW_CONTRAST=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id p0V7y_cew3C4 for <txauth@ietfa.amsl.com>; Wed, 8 Jul 2020 09:55:41 -0700 (PDT)
Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com [IPv6:2a00:1450:4864:20::233]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8E2513A0F2A for <txauth@ietf.org>; Wed, 8 Jul 2020 09:55:40 -0700 (PDT)
Received: by mail-lj1-x233.google.com with SMTP id f5so39214509ljj.10 for <txauth@ietf.org>; Wed, 08 Jul 2020 09:55:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=UqL2i4B5EzHeZKW0JWY6phcFZSo1r7E5FlSCmcpkbH0=; b=LlyNisBsyVCXah+IUMbgcIiLFZyBWJWSjtP5SzMXuDxc/ALjgtgwX5pVdIwuM/38yp LKKznUo86bVlX59rDjyXroHjiOZvL+AtGpUoZHk0DnQ95C89JE+/sxTeuGGJnckB8HoC VJEQnpEk4dHUWSCJp8dQN4gFMynGsG5YV/fPWslpUa1DrIOtRFX2JosWeAWYkdnTlfiH dLxKgynS0YKmJ/keF3akI/92kuV3LSGR7X9ZbRma1KrkpZ4UXs5Roh91IJUTu7z/kflX Id2XesTQdVuZOz45nH25+1XbS1Wo3/36SGOZLRcE++TnZcwCpsCSXrESva2ozKweu4Rq n+1Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=UqL2i4B5EzHeZKW0JWY6phcFZSo1r7E5FlSCmcpkbH0=; b=jGpoARtaAfNsjtmI6qQXjgApbR4PufB5epqjv8XHd9zsAzRsk47+JXdiiZwgk8hNuj VVEarnqcPNERkuXvFZcGhVQ9RrZMFeTik/lU0I6rHE1GGR5G46dV+Ppmjmxlbrt8p92z k/G8752USSP4YqlZPGyQZ55LEIv9T+y0YlbVyv7EqjbW3TDK+0+XkLOez0aBjQNKcX6c U5OCxViln+528/zhbHB77cz8X+98CXmBmFvoPapJmsR2F4+9m80k2bOlyPw188Ds3KSh LWa+kpr7noDMa3blMoI+GRXYh8g1LIqmJl0XIMxjQaBAGXswZ/DOEc6PUQurH2EYMIsy 6/Cw==
X-Gm-Message-State: AOAM533LOp4wz0kn6HKIXPC8Xfyb7jpSHgKte8cjrxkE4gnNnVDYyuTq WDIOULwuDrqFqeVyWTvIImNvV8O0h8tJ3ffuufSH/rSGUq4=
X-Google-Smtp-Source: ABdhPJx9tWJdeMOfT/h6bR5kP4Jv93ebXmKcZCFlbRpins/crTF15W4QG6T7xMQ2DSRxsk8F1my/78qsKyuogEjVkbk=
X-Received: by 2002:a05:651c:547:: with SMTP id q7mr32200303ljp.437.1594227338524; Wed, 08 Jul 2020 09:55:38 -0700 (PDT)
MIME-Version: 1.0
References: <CAD9ie-vnA98pobbboS00SAHneEG52_8eMxh_sE3r3jg6gyooGg@mail.gmail.com> <E9EC90C9-7A9A-4909-8627-A161B33E941F@mit.edu> <CAD9ie-vyB8+5jS=K_qUHfvxsF2wPV5APRo+7WUDfJxNzJONJpg@mail.gmail.com> <8CC8B466-FD6F-4C23-8DAA-99B8A9BDF548@mit.edu> <CAD9ie-u9z7Mc-wNjztoOTy4N_Z9jFDc2Sb6quLspasMGAMKdSw@mail.gmail.com> <097FB93E-96DA-4DF6-8511-0B32FD321211@mit.edu>
In-Reply-To: <097FB93E-96DA-4DF6-8511-0B32FD321211@mit.edu>
From: Dick Hardt <dick.hardt@gmail.com>
Date: Wed, 08 Jul 2020 09:55:02 -0700
Message-ID: <CAD9ie-tpuisauOFGiUj65-RcYPtcvW_gZP1CAadqq5cE6P36HQ@mail.gmail.com>
To: Justin Richer <jricher@mit.edu>
Cc: txauth@ietf.org
Content-Type: multipart/alternative; boundary="000000000000343e8205a9f0fa9e"
Archived-At: <https://mailarchive.ietf.org/arch/msg/txauth/fsFCVleD3FrMIzXiH1KmG2xWtdI>
Subject: Re: [Txauth] Polymorphism (Was: JSON Schema?)
X-BeenThere: txauth@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <txauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/txauth>, <mailto:txauth-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/txauth/>
List-Post: <mailto:txauth@ietf.org>
List-Help: <mailto:txauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/txauth>, <mailto:txauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 08 Jul 2020 16:55:43 -0000

Justin: it is disappointing that you deflect from responding to:

It’s not surprising that this is the case, as the XAuth protocol was not
> designed with polymorphism as a tool to consider. This is exactly the
> reason that I say we should have polymorphism in the toolbox from the
> start, as it allows us to avoid this kind of awkwardness in many cases.
>

 What evidence do you have to make this statement? "XAuth protocol was not
designed with polymorphism as a tool to consider"

Similarly, you deflected responding to your statement:

"GNAP should make use of a polymorphic protocol structure"

How are we going to have a productive conversation when you won't
acknowledge mistakes, either intentional, or unintentional?

wrt. your proposal to represent an authorization request as an array of
scopes is overly simplistic. Both XYZ and XAuth represent the request as an
object to enable a request richer than just an array of scopes.

/Dick



On Wed, Jul 8, 2020 at 7:03 AM Justin Richer <jricher@mit.edu> wrote:

> I’m glad that you’re looking at polymorphism as a possible solution to
> this, though I would contend that this particular style of polymorphism is
> not doing much more than pushing the mutual-exclusivity check down a layer
> instead of solving it.
>
> Using multiple types can in fact solve this problem, and several others,
> as long as you’re willing to let go of the syntax that OAuth 2 invented to
> solve a problem that we don’t have to solve here (passing an array-type
> value over the front channel). In XYZ’s syntax, the request for a single
> access token would look like this:
>
> {
>   “resources”: [ “read”, “write” ]
> }
>
> And the request for the multiple access tokens would look like this:
>
> {
>   “resources": {
>      “reader": [ “read” ],
>      “writer”: [ “write” ]
>   }
> }
>
> I find this to be much simpler to parse and generate, as you no longer
> need to check for a specially-reserved field name (“type”), and you no
> longer have to do a sub-parse on one of the values to get what you really
> want (the space-separated scope string into a set). It’s also a lot simpler
> for the developers that need to write this.
>
>  — Justin
>
> On Jul 7, 2020, at 7:30 PM, Dick Hardt <dick.hardt@gmail.com> wrote:
>
>
>
> On Tue, Jul 7, 2020 at 3:40 AM Justin Richer <jricher@mit.edu> wrote:
>
>> I wanted to respond to this comment more fully:
>>
>> > wrt. my authorization / authorizations oddness, polymorphism would not
>> solve it as the contents of both authorization / authorizations in XAuth
>> are objects.
>>
>> It’s not surprising that this is the case, as the XAuth protocol was not
>> designed with polymorphism as a tool to consider. This is exactly the
>> reason that I say we should have polymorphism in the toolbox from the
>> start, as it allows us to avoid this kind of awkwardness in many cases.
>>
>
>  What evidence do you have to make this statement? "XAuth protocol was not
> designed with polymorphism as a tool to consider"
>
> It sounds like you are saying I did not consider polymorphism in the XAuth
> protocol design.
>
> I will restate my comment above about polymorphism.
>
> Using different JSON types does not solve the problem, but as I suggest in
> my comments, polymorphism of different JSON objects is one solution. An
> authorization, or a dictionary of authorizations. It has the restriction
> that the string "type" cannot be used as a label in the dictionary. An
> example:
>
> {
>     "authorizations" {
>         "type": "oauth_scope",
>         "scope": "read write"
>     }
> }
>
> {
>     "authorizations" {
>         "reader": {
>             "type": "oauth_scope",
>             "scope": "read"
>         },
>         "writer": {
>             "type": "oauth_scope",
>             "scope": "write"
>         },
>     }
> }
>
>
> I am looking at making this change in XAuth and in the implementation.
>
>
>
> ᐧ
>
>
>