Re: [GNAP] DID as sub_id or assertion?

Fabien Imbault <fabien.imbault@gmail.com> Thu, 18 March 2021 04:49 UTC

Return-Path: <fabien.imbault@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 E46263A1DFC for <txauth@ietfa.amsl.com>; Wed, 17 Mar 2021 21:49:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 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_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 v6RRFnCq6L6M for <txauth@ietfa.amsl.com>; Wed, 17 Mar 2021 21:49:08 -0700 (PDT)
Received: from mail-io1-xd2a.google.com (mail-io1-xd2a.google.com [IPv6:2607:f8b0:4864:20::d2a]) (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 AA0B73A1DFB for <txauth@ietf.org>; Wed, 17 Mar 2021 21:49:08 -0700 (PDT)
Received: by mail-io1-xd2a.google.com with SMTP id e8so955920iok.5 for <txauth@ietf.org>; Wed, 17 Mar 2021 21:49:08 -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=lpuNJ2iXtsqUAvQSIu3wXMeU5b+it5D9Tn0mJOb3m7M=; b=hBREDmzvrn2nnniLNEqOKNzBsNAAF6T5b4fRqwpfA4ZDIXBuxJlpzsVOphXfAoT93E /wcyks6H4g5wGcbccUZuIpxEaLdZx9k0lZSsZ6lsDfQcamsGBQFAxniRMW4Gj6eWtBfh feAf8dqoUk5hHtUBRkE8qLTd9VZDR6ZBS11+6QfCplFKy4BVFXoiZkKMQeXuHD905HYS ybOJOrWZEW86rsR1YfVf3clxUJwGHUaQg4jPDLbooGnMWTPVuucRLNBlVLN5ILueEu8+ +4gsAs9hCaKHlAPndXV8nK7Tv3kzekjsyaOXtoNxFKnx/svhHd4sRMXv7GsZy1gvrm3P s0Kg==
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=lpuNJ2iXtsqUAvQSIu3wXMeU5b+it5D9Tn0mJOb3m7M=; b=Tkf07yokadqvTl8GoWHxtl1tnlvoym53Fy0lqJf0O/2+NByTleX4zrO1rqP+BF1heO taoMd7ZHdKid1IZUey6JsOzuvbpI+JIprVmtIRCNQPKi3lXhZYcrt0ZHTZcGWJQJ8oxS NrWfbaFQ0gVSRAAGBVz4n51GZU7ip1H3NTmjHb+gBuK4hmfnMwF5qybm6GJMdk0Q11vN Fy+NGr6ITJL2dohvaLQGskFgPzeQ47le4x91bmv4cYUy6LqsTkiQaL+jTMUs4sfsYTRs SajCMT0mJHWc3SBE85wtYs4B5lQ7s0MXi7KPlohzrP9OVLZidqRbE0bYkSmzqvzXhBSq oPzw==
X-Gm-Message-State: AOAM532q1O8TAj3gzXtWIjIlV9lAp9SQhaOW2/KQBQOnS/kvACsofNXu qOQh+KnMvAYtUBASSgBUwjTMHred7CWrFctol1Y=
X-Google-Smtp-Source: ABdhPJwyVBUZGJyN0CvRgt5XQ6lNBQmuap4LoWBsFOU0Z2aaQkfbKO9DpynUYoTxAwp/m8kIXRT6kTKuM4+7k74/L8c=
X-Received: by 2002:a02:94cb:: with SMTP id x69mr5751123jah.8.1616042946238; Wed, 17 Mar 2021 21:49:06 -0700 (PDT)
MIME-Version: 1.0
References: <CAM8feuQ5Q1LrGtniCH3WN5gyf6QhBa-9e+2kzaV0fxzA5D5m7w@mail.gmail.com> <B3A02C1B-5DF6-46AE-B806-8DBBF5F6B701@mit.edu> <CAM8feuRuCyKGCDNYXP_gwc=wk986q6m_-DDOcXR8T9k+LdoX9g@mail.gmail.com> <CAM8feuRHQJF6sWGBcvt41kH6V6fwXK0-O15aUgvRRiK9q8vefA@mail.gmail.com> <CAJmmfSSY03c1nn3qtQDhY+Zk490d++zftyftSWPOGPdgPOnkag@mail.gmail.com> <CAM8feuTSWko8q+Agn+0+tLmSAOG6NYH_dMCV697NLna1U-Sxew@mail.gmail.com> <CANYRo8immAFJ08pvd00U6zT6-zRsrHkJ28NuKyC28Fdx=F=USQ@mail.gmail.com> <CAM8feuQbDJfPqym-2VAb4VyDuL8rm_Yk-sGyrb8_qAapUBtEuw@mail.gmail.com> <CAM8feuS332Ng_Bi=doXzq0WEgLc7_+tOmB4uE71+bpJ_g4P-aw@mail.gmail.com> <CANYRo8jG+ZutU6Bhy7zSrKcgnVxjMze7i-y_UpU3+PWvsWfLvA@mail.gmail.com> <CAM8feuSixNA2oFTtYR0Y3vngc+3UbsOSqSBCA6RUEEByB25eNA@mail.gmail.com> <CANYRo8hts6P_4QNjjcUr-H9B9wGJeVckWw+3V3N9hdPHf_idLQ@mail.gmail.com> <CAM8feuQEQyCEOErds8rpcipaqyPm3L3XMdrbQ6X2t3y9xcO4dQ@mail.gmail.com> <CAJmmfSQKZWm=YsjBVV8O+vU9zzC+eka0CCaQO-xFP-GcWzEigw@mail.gmail.com> <CANYRo8jw9gHQESDk__aKM3jK-C9FvYTFYOzb-8iYzbc_hVjMPA@mail.gmail.com> <EDB79C39-D706-43B2-B7D6-234CB32F7411@mit.edu> <CANYRo8inRJa0bAe6gqOkLKqHnt-qxPrzhDufBLwXd-S4wfjdxg@mail.gmail.com> <CAM8feuS98hqZ36hjCHg_=wpueDyXHb7t156OXnL_8MXtzpiyjA@mail.gmail.com> <CANYRo8i4gVpV5Fv7Yr9AFLNSq658EayHK5yJ+vp2ecUaRJ6fYw@mail.gmail.com> <CAM8feuSC2EDHbVHXjHAkgV8jfYP9+gQ_ZV-+y=aoEjf97Rbyqg@mail.gmail.com> <CANYRo8hdA0vLRXwOMDDg99qQHWC=DAzk+ht=ykjZ42bPmUxdPA@mail.gmail.com> <CAM8feuRHk3jKVEiv9FxLFiuTESLyLw48=EgSVr0feVSBm1hnpg@mail.gmail.com> <CANYRo8jDhGXj5pV01MqMqMqd7iB5sCQ=Zs8zy2pxig8i1-BavA@mail.gmail.com>
In-Reply-To: <CANYRo8jDhGXj5pV01MqMqMqd7iB5sCQ=Zs8zy2pxig8i1-BavA@mail.gmail.com>
From: Fabien Imbault <fabien.imbault@gmail.com>
Date: Thu, 18 Mar 2021 05:48:52 +0100
Message-ID: <CAM8feuTND1L6nktrZc7HNnEJnbg8rToBfZrH_Z3bvdsG=A44eg@mail.gmail.com>
To: Adrian Gropper <agropper@healthurl.com>
Cc: Justin Richer <jricher@mit.edu>, Tobias Looker <tobias.looker@mattr.global>, GNAP Mailing List <txauth@ietf.org>, Alan Karp <alanhkarp@gmail.com>, Mark Miller <erights@gmail.com>
Content-Type: multipart/alternative; boundary="000000000000c09d2705bdc851e0"
Archived-At: <https://mailarchive.ietf.org/arch/msg/txauth/hYno-5IcxRESGkuy3GU0s581vQA>
Subject: Re: [GNAP] DID as sub_id or assertion?
X-BeenThere: txauth@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: GNAP <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: Thu, 18 Mar 2021 04:49:11 -0000

There are 2 different things :
- there's a generic protocol where the client doesn't need to understand
the token, based on some joint knowledge between the RS and the AS (i.e.
what these tokens represent)
- and there could be some additional assumptions (e.g. token format, RS
preflight, etc.) on how the RS gets involved in a more dynamic way.

Both views are valid, but the goal is to keep easy things simple, and allow
complex stuff too.

"if the token is opaque, then of course it has to be introspected by some
entity the RS trusts, such as an AS." not necessarily, it's entirely
possible for the RS to simply say "thanks reputable AS, I accept to process
that access token". Or you might introspect at run time. Or in some more
sensitive scenarii you might really want to go one step further and indeed
establish some agreement on what tokens mean. All I'm saying is that there
are shades in what is possible.

On your last point that's just to say that the client posture may be part
of the policy decision (since you asked if the client matters).

Fabien

Le jeu. 18 mars 2021 à 05:21, Adrian Gropper <agropper@healthurl.com> a
écrit :

> ... "the knowledge the AS has of the RO" is a combination of policies the
> RO controls and the promise the RO received from the RS.
>
> Once the RS has made and signed a promise in some form, why does it need
> to know whether an AS was involved as long as the token has privileges that
> are equal or less than the promise?
>
> As Alan says, if the token is opaque, then of course it has to be
> introspected by some entity the RS trusts, such as an AS. Was that AS set
> as part of the promise made to the RO?
>
> What does client registration have to do with any of this?
>
> Adrian
>
> On Thu, Mar 18, 2021 at 12:07 AM Fabien Imbault <fabien.imbault@gmail.com>
> wrote:
>
>> Yes, the AS is the policy manager and the token issuer for that
>> delegation, based on the knowledge it has of the RO.
>> We don't assume much on the lifecycle of the protected resource, except
>> that they expect a valid access token issued by the AS to provide access.
>>
>> We defined client instances related to one client software. The client
>> does matter, we could even define its class or posture, but it's possible
>> to make a request to the AS even if you're not pre registered.
>>
>> Fabien
>>
>> Le jeu. 18 mars 2021 à 04:54, Adrian Gropper <agropper@healthurl.com> a
>> écrit :
>>
>>> Sure!
>>>
>>> Is there an AS involved in the delegation? How and where in the
>>> lifecycle of the protected resource?
>>>
>>> Also your use of "the client" seems to imply that either there is only
>>> one client or the client doesn't matter. Which is it?
>>>
>>> Adrian
>>>
>>> On Wed, Mar 17, 2021 at 11:43 PM Fabien Imbault <
>>> fabien.imbault@gmail.com> wrote:
>>>
>>>> Thanks for that.
>>>>
>>>> Trying to reframe it:
>>>> GNAP is defined as a delegation protocol so the main intent is related
>>>> to a delegate of the RO (i.e. the end user) that wishes to access the RO's
>>>> protected resources, through the client.
>>>>
>>>> Fabien
>>>>
>>>> Le jeu. 18 mars 2021 à 04:29, Adrian Gropper <agropper@healthurl.com>
>>>> a écrit :
>>>>
>>>>> At various points in the lifecycle of the protected resource the
>>>>> client at the resource server (RS) might be:
>>>>>
>>>>>    - The RO (subject) user agent trading payment for a service promise
>>>>>    - The RO user agent using the promise to access the protected
>>>>>    resource
>>>>>    - A delegate of the RO user agent using a different client
>>>>>
>>>>> What's vague is where the GNAP AS enters the picture as described
>>>>> above. How would you describe it?
>>>>>
>>>>> Adrian
>>>>>
>>>>>
>>>>> On Wed, Mar 17, 2021 at 10:20 PM Fabien Imbault <
>>>>> fabien.imbault@gmail.com> wrote:
>>>>>
>>>>>> Hi Adrian
>>>>>>
>>>>>> I'm still confused why you're saying the terminology is vague.
>>>>>> I get the "power" neutrality is not to your liking, but RQ / user
>>>>>> agent is no better in my view.
>>>>>>
>>>>>> Can you elaborate?
>>>>>>
>>>>>> Fabien
>>>>>>
>>>>>> Le jeu. 18 mars 2021 à 00:18, Adrian Gropper <agropper@healthurl.com>
>>>>>> a écrit :
>>>>>>
>>>>>>> I'm sure you're right. Our vague terminology around
>>>>>>> client and end-user leads to my confusion. If GNAP is primarily about
>>>>>>> delegation then, of course, we should avoid any incentives to impersonate
>>>>>>> or we're wasting our time. This is partly why I'm trying to study up on
>>>>>>> capabilities and asking for expert advice from folks like Alan Karp and
>>>>>>> Mark Miller (cc'd)
>>>>>>>
>>>>>>> As best I can understand it, the RS has only two choices, it can:
>>>>>>>
>>>>>>>    - store an attribute of the RO a [DID, email address, GNAP AS
>>>>>>>    URL], or
>>>>>>>    - hand the RO a capability as a sort-of promise and avoid making
>>>>>>>    any entries in an ACL or equivalent.
>>>>>>>
>>>>>>> When a token comes back to the RS, it will either be:
>>>>>>>
>>>>>>>    - validated according to something associated with the stored RO
>>>>>>>    attribute, or
>>>>>>>    - signed by the RS itself.
>>>>>>>
>>>>>>> Either way, trust in the client seems moot.
>>>>>>>
>>>>>>> Adrian
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Wed, Mar 17, 2021 at 5:29 PM Justin Richer <jricher@mit.edu>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> On Mar 17, 2021, at 4:55 PM, Adrian Gropper <agropper@healthurl.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Mar 17, 2021 at 4:23 PM Tobias Looker <
>>>>>>>> tobias.looker@mattr.global> wrote:
>>>>>>>>
>>>>>>>>> <snip>
>>>>>>>>> > A client might not have a DID but it could have a VC as a
>>>>>>>>> certificate of authenticity linked to some audit mechanism.
>>>>>>>>>
>>>>>>>>> To me a VC would come under the assertions umbrella (that is to
>>>>>>>>> say a VC could be one type of valid assertion). The client may possess or
>>>>>>>>> been presented with a VC that it could include in its request to the AS as
>>>>>>>>> a way to identify the subject and perhaps prove authentication and
>>>>>>>>> authorization.
>>>>>>>>>
>>>>>>>>
>>>>>>>> I do not assume that the client that interacts with the AS to make
>>>>>>>> a request and receive a token is the same as the client that will present
>>>>>>>> the token to the RS. In the US HIPAA use-case, for example, the root of
>>>>>>>> trust is a contract between the patient-subject and the doctor-requesting
>>>>>>>> party but the doctor workflow is expected to delegate the token to some
>>>>>>>> other end-user that may be using a totally different client such as an EHR.
>>>>>>>>
>>>>>>>>
>>>>>>>> If the client that gets the token is not same as the client that
>>>>>>>> uses the token, that is a violation of core security principles as it
>>>>>>>> allows for (and really designs for) impersonation by client software. I
>>>>>>>> would have no reason to trust client software that would hand its
>>>>>>>> credentials over to another piece of software, and in fact I shouldn’t
>>>>>>>> trust it.
>>>>>>>>
>>>>>>>> I think you may be conflating several different kinds of parties
>>>>>>>> under the “client” umbrella here, though. It’s entirely possible that one
>>>>>>>> client might call an RS that in turn acts as a client for something else
>>>>>>>> down stream. But each of those hops is different from the last.
>>>>>>>>
>>>>>>>>  — Justin
>>>>>>>>
>>>>>>>>