Re: [GNAP] AD review of draft-ietf-gnap-core-protocol-15
Justin Richer <jricher@mit.edu> Thu, 07 September 2023 15:42 UTC
Return-Path: <jricher@mit.edu>
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 B695FC14CE30 for <txauth@ietfa.amsl.com>; Thu, 7 Sep 2023 08:42:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.107
X-Spam-Level:
X-Spam-Status: No, score=-7.107 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, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=mit.edu
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0mcJEr35dOep for <txauth@ietfa.amsl.com>; Thu, 7 Sep 2023 08:42:19 -0700 (PDT)
Received: from outgoing-exchange-1.mit.edu (outgoing-exchange-1.mit.edu [18.9.28.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 276E9C14CE25 for <txauth@ietf.org>; Thu, 7 Sep 2023 08:42:18 -0700 (PDT)
Received: from w92exedge3.exchange.mit.edu (W92EXEDGE3.EXCHANGE.MIT.EDU [18.7.73.15]) by outgoing-exchange-1.mit.edu (8.14.7/8.12.4) with ESMTP id 387Fev37009703; Thu, 7 Sep 2023 11:42:13 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mit.edu; s=outgoing; t=1694101334; bh=ncMWjmncDDmej/zGfO731yXAtk6C0/4ypKo839tAJUg=; h=From:Subject:Date:Message-ID:Content-Type:MIME-Version; b=CiK6WJ7VodrAup0gl5m6p+FGZYPIhMziHRQ5MU1Urgai3Ihge1GNPOhYyD9BRcpy9 EA0Ez45wJmUETStl4M52jNjmw/Ef3LWD99u4XBXGwLNDASfc+ncIXuqDeGW/0YM7um AvPU1Mkt5Bu1xBV6q6bILNnf1v7EAuHakv1CCtz29f3a7P5t300LqaOFxvXZQ8ZsBg juOxddzdypI7RiQb0P1VaZHJXLXaCJWwsRhPwVLxvEaMtiyxuREng5yZabtPf3BGls rIYc6H8iyXl39PUupoi+68X1meUHnZ6Sba0WeG5O5JXgkevfvFZjLy5ob4twQ7Q70o e8NSjsLAlL15A==
Received: from w92expo28.exchange.mit.edu (18.7.74.34) by w92exedge3.exchange.mit.edu (18.7.73.15) with Microsoft SMTP Server (TLS) id 15.0.1497.48; Thu, 7 Sep 2023 11:40:32 -0400
Received: from oc11exhyb5.exchange.mit.edu (18.9.1.110) by w92expo28.exchange.mit.edu (18.7.74.34) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Thu, 7 Sep 2023 11:41:11 -0400
Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.108) by oc11exhyb5.exchange.mit.edu (18.9.1.110) with Microsoft SMTP Server (TLS) id 15.0.1497.48 via Frontend Transport; Thu, 7 Sep 2023 11:41:10 -0400
Received: from DM6PR01MB4444.prod.exchangelabs.com (2603:10b6:5:78::15) by PH0PR01MB6280.prod.exchangelabs.com (2603:10b6:510:18::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6745.34; Thu, 7 Sep 2023 15:41:08 +0000
Received: from DM6PR01MB4444.prod.exchangelabs.com ([fe80::7fe8:9de9:e874:3835]) by DM6PR01MB4444.prod.exchangelabs.com ([fe80::7fe8:9de9:e874:3835%4]) with mapi id 15.20.6745.034; Thu, 7 Sep 2023 15:41:08 +0000
From: Justin Richer <jricher@mit.edu>
To: "rdd@cert.org" <rdd@cert.org>
CC: "txauth@ietf.org" <txauth@ietf.org>
Thread-Topic: [GNAP] AD review of draft-ietf-gnap-core-protocol-15
Thread-Index: AdnhEGaZz7I/z31LSuKdCt/5BASAXwAkUsGA
Date: Thu, 07 Sep 2023 15:41:08 +0000
Message-ID: <EC43C248-0370-479E-9E69-778E2E0D5887@mit.edu>
References: <BN2P110MB1107AE91B428DE2FEAC1C378DCEFA@BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM>
In-Reply-To: <BN2P110MB1107AE91B428DE2FEAC1C378DCEFA@BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=mit.edu;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DM6PR01MB4444:EE_|PH0PR01MB6280:EE_
x-ms-office365-filtering-correlation-id: 7c25bcc5-3027-4aa8-a117-08dbafb8dae5
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: 37lW/wX2BrMWZ7yvKjCzUrRgjcW0mJLhnMJkMzzdvLUUNhFW68ew4RjgU4PneImDYtLZ/LHe6dprZH8T+/vIvQXksKtyqShVLnS2bP5wCl+2BvNMXD4ghZQzCnOpkG+m+VL0yyppSFwV+mfKHyg86qIhkfOga5GucYOfDjWpTeiKJXDku2o9nple8uqFTVr9S6lBbNiTeixEAp9QJohzuAdKou2djuwMbqndq41qTwXhnUzm/Sa780X4SFL9hj11F9288JBppf/Lep7yf1bt+58DGasWdICq0fsX7RLdsf+CISyU7om/5dtEa9YqdzyDSM/lUSbPy5bY60GhIEzN6BjMXcCnYHVhWX1om8t/8SktxOEyqJucOAnYwH1KL5akh4kKz3zk+ynreIglf+V/QO99apx49s3bN/3OwMg/H5RfI/mlzziht/da20AnoUzXq5hwr0HDzwe6NuZFelBi6o3SWOirXeEAYxemZK2q6grHAGPvLPordz+rLgOGfm0hTD4qifU/rKIskwK4BFwP0P0syP7mFEXdRjUoF6WENjT4TmQ5rFYIEg6Hrzv1Ckf74FJVTnHdVanFDyRRLU8OtDgaMFewJd56hyuU3RcjRek=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR01MB4444.prod.exchangelabs.com; PTR:; CAT:NONE; SFS:(13230031)(39860400002)(366004)(346002)(136003)(396003)(376002)(451199024)(186009)(1800799009)(478600001)(30864003)(71200400001)(966005)(6512007)(91956017)(6506007)(6486002)(316002)(6916009)(786003)(2616005)(8676002)(5660300002)(26005)(41300700001)(8936002)(83380400001)(66574015)(2906002)(4326008)(66556008)(76116006)(122000001)(38070700005)(38100700002)(33656002)(36756003)(64756008)(53546011)(66446008)(66946007)(86362001)(66476007)(75432002); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: CWBl2Cl4pv+ebaOJ/jZBFMdwnu2gnA7mwbeKWOiE+ZCsxotlmGXfPno0pwf9iDqgBb7Dm0jZ2KdDj8XKpUDZbt3mN999ABBp59DN9hfEu4G8Dz+vRzMY/7hncEDAutctCTImYV2eqPwnc7ZXOHY1f3BlMLV7m2xJ0Z9qrFtVbE4k3hOyOiQ+bWy9o6kdQs/0MUO+nFlDOZ/MVKYKUY+DzHrTr+c9CwW4h0fvOJO84ie9iqIhpGOGBYknGcmJ8Po9W178z0RZJNTJ5K3adjnQUgVOVYM8vUamrdlp2NePJit1kp8swJb33BVp+1BGqKmOfMUMkDduQx+ANyYH2xssW6yNkPSiSqldgogHSDFvLR46nY1WPGTIIlfafPfV98XzP1oRU6k/xiI77oZukfOmC/CVx3Qtw8WEhPPS6MRi4Wc6lXYtSXW3taQlSjmvu/LpdE3wjAUzq0eKBByoK+zwmF4uo91vGSFou0fYb3n3s6kU1E90q0FYq0TIZbgeKVJL0vkkksOKkXD6GkzvtjHkohS3R5YfvSf/xVOmJ5jxrleqeo8/jDXANd2JyarFcWHG2Vvhvy9OoER71dYGI93tPyxvvkHVc/IYaekn8CdOqbW/oiHPLoAlfmjKprcibzPnY6K6T79VxfpdQ4opn3DoLcpUlyPQn1NINQP02ae0+w9SdCjoBAYpVxwxteT0yHk46gx8DKzalaIwv2yuw96g3rntjpYEMSwLFPhAbiutgIQP3Qf9kMBk9EMGcEuRN+M83gA2oteCayhe0gUHrYLye1V9OIVks25eyrDleHEPCk0As4ucVv8K2Axc2wCsB1drra9cVpkjx/OpQ7/rYWVoWmYcLJcj28gl8uWc/7vRfWSmqQd+GaZsrzc9f8NHW4+0Y/+I/T5MLRhPsyzDZ7xYp5Q1JID36DC7rnoHdlX53qHHG/yGaG8G/+ECty87BXT5H6X1dbCqxbCez+5gAIhvVxlOWScI86QakIUa9bmWG97MQhg7XJAYfu/1yBMokZWF5ySJoGyYiNhzGT24krF75TvdqdkzbSfWhTylNMlDdJuYGT2SeHfmMCoKbhlmdOidsjm7eM56narBmm6gv2cJ/E/kFpjhJ7Wt8rVlYHW5TrhrC+TbVK4b4C6gnITolIDe74MsbMfInxa5dNwTeBngA3cARjdHQfbI0piQ/JmfraAoAjT7+ppVKHj3KYqC+phATj2bJAwwhoyMjTwyFK5j9pWKpO93JzZKjcdObKGLVXluUjTeCuFTM6w0qweu5NXxiwGcPt4mEl47M0weIiCLZiHCQAGWdAEas73HSGl+vcuUADMP4A6zlwZHsPde0e5NPTU3jqmbnSaKCbDfRytx4O7klzlhv9HJ4SAxmBHdmYAy7qGzV5JztH8TQOs6507W2am+okIMtpo5xXyEM92vySc9Z/Xgy/DmwPgBGE0gko4FfeUYL3+goXQ7hog7GNM5R9SByrLf3A4GOKra+vf3Xa8Dtub7l1QBFCrnuy1zTOzVqVuAx6iMwoCNWgJV2QblzkcC9bwirHlawjJoBfXyedd1XjLPxYgRfoD/5iu3C/LdhY2FvelL4ZvS3HvX9Z2P
Content-Type: text/plain; charset="utf-8"
Content-ID: <1BD6827E586C084282E656ADBC2FAAD5@prod.exchangelabs.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DM6PR01MB4444.prod.exchangelabs.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7c25bcc5-3027-4aa8-a117-08dbafb8dae5
X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Sep 2023 15:41:08.4199 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 64afd9ba-0ecf-4acf-bc36-935f6235ba8b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: cNxiD2XFdkySv/6SmIh/EJISu7XVRqi+Jozht9NlW90VzbcnxiybNU0LBBK6tdRQ
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR01MB6280
X-OriginatorOrg: mit.edu
Archived-At: <https://mailarchive.ietf.org/arch/msg/txauth/vaBxj2Fu3J_CNemzqeIVKqPeKao>
Subject: Re: [GNAP] AD review of draft-ietf-gnap-core-protocol-15
X-BeenThere: txauth@ietf.org
X-Mailman-Version: 2.1.39
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, 07 Sep 2023 15:42:23 -0000
Hi Roman, thanks for the thorough review, and I wanted to confirm that we saw it. Fabien and I going to go through all of these items. On a quick skim I don’t see anything shocking, but I know we need to do a more deep and thorough read through before responding.
Thanks again, it’s a big document and a lot to cover!
— Justin
> On Sep 6, 2023, at 6:23 PM, Roman Danyliw <rdd@cert.org> wrote:
>
> Hi!
>
> I performed an AD review of draft-ietf-gnap-core-protocol-15. Congrats on getting this core deliverable out of the WG. This took a tremendous amount of work. I appreciate everyone's patience as I reviewed this document. Below is my feedback and it contains no show-stopping protocol feedback. The majority of it points to places where additional clarity and process would be helpful.
>
>
> ** Section 1. Editorial.
> GNAP
> and OAuth 2.0 will likely exist in parallel for many deployments, and
> considerations have been taken to facilitate the mapping and
> transition from legacy systems to GNAP. Some examples of these can
> be found in Appendix C.5.
>
> The example in Appendix C.5 appears be constructed around OAuth 2.0. Is this text suggesting that OAuth is somehow a legacy protocol? Please rephrase.
>
> ** Section 1.2. Editorial
> The
> client is operated by the end user or it runs autonomously on
> behalf of a resource owner.
>
> Example: a client can be a mobile application, a web application,
> etc.
>
> These examples seem like ones where there is a end-user. What is an example of client which runs autonomously on behalf of the resource owner?
>
> ** Section 1.2. Editorial.
> Resource Server (RS): server that provides operations on protected
> Resources
>
> “Provides operations” is difficult to parse. How is this definition different than OAuth’s in RFC6749:
>
> ==[ snip ]==
> The server hosting the protected resources, capable of accepting
> and responding to protected resource requests using access tokens.
> ==[ snip ]==
>
> ** Section 1.3. At the level of detail provided here, what is the difference between an “attribute” and “subject information”?
>
> ** Section 1.4. Editorial.
> Client developers promise to implement
> requirements and generally some recommendations or best practices,
> so that the end users may confidently use their software.
>
> Is that true? Do developers of applications make such promises?
>
> ** Section 1.4
> However, end users might also be facing some attacker's client
> software, without even realizing it.
>
> -- Editorial. s/also be facing some attacker’s/also be facing an attacker’s/
>
> -- Isn’t the end user also equally exposed to incorrectly or poorly implemented clients
>
> ** Section 1.4
> * end user/AS: when the client supports it (see Section 3.3), the
> end user gets to interact with front-channel URIs provided by the
> AS.
>
> -- Please define the concept of a “front channel URI”?
>
> -- How does GNAP work is the end user doesn’t engage the AS? I ask because the text is written … “when the client support its …”, which would suggest a client at time when it does not. What happens then?
>
> ** Section 1.4
> * RS/RO: the RS promises it protects its resources from unauthorized
> access, and only accepts valid access tokens issued by a trusted
> AS. In case tokens are key bound, proper validation is expected
> from the RS.
>
> If this text is about the RO trusting the RS, none of the text here mentions the RO.
>
> ** Section 1.5. Editorial. Consider providing a forward reference for “continuation access token”?
>
> ** Section 2.3
> Both the display and class_id are self-declarative and thus the AS
> SHOULD exercise caution in their interpretation, taking them as a
> hint but not as absolute truth.
>
> -- Is “self-declarative” the same as “free-form”? Interoperability is not expected and it’s use requires further profiling?
>
> -- Since SHOULD is used, when would the AS NOT exercise caution?
>
> ** Section 2.3. Editorial.
>
> The class_id field can be used in a
> variety of ways to help the a variety of ways to help the AS make
> sense of the particular context in which the client instance is
> operating.
>
> s/can be used in a variety of ways to help the a variety of ways/can be used in a variety of ways to help/.
>
> ** Section 2.3
> it SHOULD return an
> invalid_client error (Section 3.6) or choose to return lesser levels
> of privileges.
>
> Given the significant flexibility afforded to the “class_id”, is there confidence returning a lesser level of privilege is a normative SHOULD?
>
> ** Section 2.3
> If the AS does not know the client instance's public
> key ahead of time, the AS MAY accept or reject the request based on
> AS policy, attestations within the client request, and other
> mechanisms.
>
> Isn’t “AS policy” all encompassing and already covers “attestations within the client request and other mechanisms”?
>
> ** Section 2.3
> A client instance that is capable of talking to multiple AS's SHOULD
> use a different key for each AS to prevent a class of mix-up attacks
> as described in Section 13.30.
>
> When would it be a prudent or necessary for the client to use the same key across ASs? Put in another way, why this flexibility?
>
> ** Section 2.4. Editorial. Please provide an internal references to the format of “assertions”.
>
> ** Section 2.4. Editorial. Expand “IdP”.
>
> ** Section 2.5. Editorial
> In this non-normative example, the client instance is indicating that
> it can redirect (Section 2.5.1.1) the end user to an arbitrary URI
> and can receive a redirect (Section 2.5.2.1) through a browser
> request.
>
> "interact": {
> "start": ["redirect"],
> "finish": {
> "method": "redirect",
> "uri": "https://client.example.net/return/123455",
> "nonce": "LKLTI25DK82FX4T4QFZC"
> }
> }
>
> The example after this one explicitly mentions that this client cannot accept a redirect or push callback. Isn’t push call back also not supported here?
>
> ** Section 2.5
>
> In this non-normative example, the client instance is indicating that
> it can display a user code (Section 2.5.1.3) and direct the end user
> to an arbitrary URI (Section 2.5.1.1) on a secondary device, but it
> cannot accept a redirect or push callback.
>
> "interact": {
> "start": ["redirect", "user_code"]
> }
>
> Which part of this example suggests a secondary device? The definition of “redirect” and “user_code” in Section 2.5.1.1 make no reference to a secondary device.
>
> ** Section 2.5
>
> If the client instance does not provide a suitable interaction
> mechanism, the AS cannot contact the RO asynchronously, and the AS
> determines that interaction is required, then the AS SHOULD return an
> invalid_interaction error (Section 3.6) since the client instance
> will be unable to complete the request without authorization.
>
> The sending of an error message seems to be optional. When is a silent failure acceptable?
>
> ** Section 2.5.2. nonce. Is there a minimal or recommended nonce size?
>
> ** Section 2.5.2. Editorial. s/the the/the/
>
> ** Section 2.5.2.1 and 2.5.2.2.
>
> -- method=redirect says, “The client instance's URI MUST be protected by HTTPS, …”
>
> -- method=push says, “The client instance's URI MUST be an HTTP URI and MUST be protected by HTTPS or equivalent”
>
> What is the difference in intent?
>
> What is envisioned with “equivalent”? This phrase is used a few other times.
>
> ** Section 3. Editorial. s/eg,/e.g.,/
>
> ** Section 3.1. Editorial. s/an an/an/
>
> ** Section 3.3.4. Please use one of the example domains instead of “srv.ex”
>
> ** Section 3.5. Is there any minimum guidance on the length of an instance_id?
>
> ** Section 4.
> The client instance MUST use each interaction method at most once.
> The AS SHOULD handle any interact request as a one-time-use mechanism
> and SHOULD apply suitable timeouts to any interaction start methods
> provided, including user codes and redirection URIs. The client
> instance SHOULD apply suitable timeouts to any interaction finish
> method.
>
> There is a nuance of the client instance being constrained to using an interaction only once (MUST) but the AS seemingly having some flexibility. Could this be clarified?
>
> ** Section 4.1.
> If the client instance does not start an interaction start mode
> within an AS-determined amount of time, the AS SHOULD reject attempts
> to use the interaction start modes.
>
> If the AS sets a policy that the interaction mode needs to occur in a determined amount of time, why wouldn’t the AS reject the start attempt?
>
> ** Section 4.1.2 and 3.3.3. Could the text please be clearer on the permitted “alphabet” for the user code.
>
> -- Section 3.3.3 says “To facilitate usability, this string MUST consist only of characters that can be easily typed by the end user (such as ASCII letters or numbers)”
>
> -- Section 4.1.2 says “To facilitate this, it is RECOMMENDED that the AS use only ASCII letters and numbers as valid characters for the user code.”
>
> The guidance in Section 3.3.3 seems subjective and doesn’t seem like it would lead to consistent implementations.
>
> Same comments apply for Section 4.1.3.
>
> ** Section 4.1.2.
> As a
> consequence, these URIs SHOULD be short.
>
> I understand the spirit of this guidance but “short” is subjective. Please be more specific or use alternative language.
>
> ** Section 4.1.3. Editorial. Much of this guidance seems to be verbatim repetition of section 4.1.2. Is that needed?
>
> ** Section 4.2.
> If a
> finish method is not available, the AS SHOULD instruct the RO to
> return to the client instance upon completion.
>
> What is the alternative to this approach if a finish method is not available?
>
> ** Section 4.2.2. Does the interact_ref share the same properties as the nonce defined in Section 2.5.2. For example, is it an ASCII string? Does it use the whole ASCII alphabet?
>
> ** Section 5. Typo. s/contination/continuation/
>
> ** Section 5 and 9.1
> POST /continue/KSKUOMUKM HTTP/1.1
> Authorization: GNAP 80UPRY5NM33OMUKMKSKU
> Host: server.example.com
> Content-Length: 0
> Signature-Input: sig1=...
> Signature: sig1=...
>
> This example (and a number of them later) appear to be showing a new “GNAP HTTP Authentication Scheme” (i.e., “Authorization: GNAP 80UPRY5NM33OMUKMKSKU”). Section 9.1 also references “responding with the WWW-Authenticate header field and a GNAP challenge.”
>
> Where is the GNAP authentication scheme formally described and registered? https://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml has no such registration and there no IANA action in this document to add it.
>
> ** Section 5.4
> The AS SHOULD revoke all associated
> access tokens, if possible. The AS SHOULD disable all token rotation
> and other token management functions on such access tokens, if
> possible.
>
> Wouldn’t the use of SHOULD instead of MUST here present an issue. If a client issues a “DELETE” for its access tokens with an AS how does it know that all of it’s tokens have been removed if this flexibility is provided?
>
> ** Section 6.1
> To rotate an access token, the client instance makes an HTTP POST to
> the token management URI with no message body, sending the access
> token in the appropriate header and signing the request with the
> appropriate key.
>
> What is the “appropriate header” here?
>
> ** Section 6.1
> If the AS is unable or unwilling to rotate the value of the access
> token, the AS responds with an invalid_rotation error (Section 3.6).
> Upon receiving such an error, the client instance SHOULD consider the
> access token to not have changed its state.
>
> Can the second sentence be clarified? When would a rejection translate to state change?
>
> ** Section 7.3. Typo. s/defines defines/defines/
>
> ** Section 7.3
> Key binding method definitions SHOULD
> enumerate how these requirements are fulfilled.
>
> -- Is this guidance to the Designated Expert who is going to review future key binding methods?
>
> -- If so, why would it be acceptable for a new key binding method NOT to explain how it fulfills its requirements?
>
> ** Section 7.3.1
>
> The signer
> SHOULD include the nonce parameter with a unique and unguessable
> value. When included, the verifier MUST determine that the nonce
> value is unique within a reasonably short time period such as several
> minutes.
>
> How does the verifier determine that the freshness of the nonce to a “short time period”?
>
> ** Section 8. Should it be explicitly said that no interoperability across types?
>
> ** Section 8. Typo. s/the the/the/
>
> ** Section 8.
> Specific API
> implementations SHOULD re-use these fields with the same semantics
> and syntax.
>
> Why wouldn’t deviations from the semantics defined here require custom labels from being defined?
>
> ** Section 8. locations. If these strings aren’t URIs, how else would the RS location be defined?
>
> ** Section 8.
>
> The access requested for each object in the array is the cross-
> product of all fields of the object.
>
> Is this statement explaining the example or a general statement about interpreting each object in the array?
>
> ** Section 9.1
> The opaque access reference MUST be sufficient for at least
> the action the client instance was attempting to take at the RS and
> MAY be more powerful.
>
> Could this guidance be clarified? How is this access reference have any “power” beyond being an identifier that needs to brought to the AS?
>
> ** Section 11. It appears that all of the registries in Section 11.* have a mandatory column to reference the specification document. Given that requirement, why is the registration policy not “Specification Required” which also includes “Expert Review”?
>
> ** Section 11. The OAuth registries (FWIW, all OAuth registries are specification required -- https://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml.) were all very particular about having a change control column. Do the circumstances that necessitated that apply to GNAP?
>
> ** Section 11.4.2. Is citing Section 2.2 and 3.4 for id_token and saml2 the right approach? Those two sections don’t seem to provide anything specific for those mechanisms? Why isn’t the specification document [OIDC] And [SAML2]?
>
> ** Section 13.1
>
> All requests in GNAP have to be made over TLS or equivalent as
> outlined in [BCP195]
>
> “or equivalent” doesn’t mean anything relative to BCP195 which is scoped to (D)TLS. What is meant by “equivalent”?
>
> ** Section 13.1.
>
> … and any
> back-end communications such as from an RS to an AS as described in
> [I-D.ietf-gnap-resource-servers]
>
> It seems odd to provide normative requirements for another draft.
>
> ** Section 13.1. Editorial. This section seems to repeat itself a lot.
>
> (a) All requests in GNAP have to be made over TLS or equivalent as
> outlined in [BCP195] to protect the contents of the request and
> response from manipulation and interception by an attacker. This
> includes all requests from a client instance to the AS, all requests
> from the client instance to an RS, any requests back to a client
> instance such as the push-based interaction finish method, and any
> back-end communications such as from an RS to an AS as described in
> [I-D.ietf-gnap-resource-servers]. Additionally, all requests between
> a browser and other components, such as during redirect-based
> interaction, need to be made over TLS or use equivalent protection.
>
> (b) The use of key-bound access tokens does not negate the requirement
> for protecting calls to the RS with TLS.
>
> (c) TLS or equivalent protection also needs to be used between the
> browser and any other components.
>
> The text in (a) seems helpfully clear that all GNAP communication regardless of the parties needs to be over TLS. (b) and (c) seem to repeat that.
>
> ** Section 13.3. Editorial. Expand “SPAs”.
>
> ** Section 13.18.
>
> PKI has historically been difficult to deploy, especially at
> scale, but it remains an appropriate solution for systems where the
> required overhead is not an impediment.
>
> Recommend against this statement without citation or being specific about client-oriented certificates. Server certificates in the WebPKI, especially since ACME seems to going quite well.
>
> ** Section 13.23. “… (in most cases over HTTP)”, should this be HTTPS?
>
> ** Section 13.24. Typo. s/defence/defense/
>
> ** Section 13.24. Typo. s/Prerequesits/Prerequisites/
>
> ** IDNITs reports:
>
> == Outdated reference: draft-ietf-httpbis-client-cert-field has been
> published as RFC 9440
>
> --
> TXAuth mailing list
> TXAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/txauth
- [GNAP] AD review of draft-ietf-gnap-core-protocol… Roman Danyliw
- Re: [GNAP] AD review of draft-ietf-gnap-core-prot… Justin Richer
- Re: [GNAP] AD review of draft-ietf-gnap-core-prot… Justin Richer
- Re: [GNAP] AD review of draft-ietf-gnap-core-prot… Justin Richer
- Re: [GNAP] AD review of draft-ietf-gnap-core-prot… Justin Richer
- Re: [GNAP] AD review of draft-ietf-gnap-core-prot… Roman Danyliw
- Re: [GNAP] AD review of draft-ietf-gnap-core-prot… Justin Richer