Re: [OAUTH-WG] AD review of draft-ietf-oauth-rar-12

Roman Danyliw <rdd@cert.org> Mon, 17 October 2022 20:50 UTC

Return-Path: <rdd@cert.org>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 88123C14CE42 for <oauth@ietfa.amsl.com>; Mon, 17 Oct 2022 13:50:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.106
X-Spam-Level:
X-Spam-Status: No, score=-2.106 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, HTML_MESSAGE=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, 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 (1024-bit key) header.d=cert.org
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 ltuI9P7fVkPy for <oauth@ietfa.amsl.com>; Mon, 17 Oct 2022 13:50:26 -0700 (PDT)
Received: from USG02-CY1-obe.outbound.protection.office365.us (mail-cy1usg02on0104.outbound.protection.office365.us [23.103.209.104]) (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 3143DC14F720 for <oauth@ietf.org>; Mon, 17 Oct 2022 13:50:25 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector5401; d=microsoft.com; cv=none; b=OcUlgcfNnlF6tiiDOyxpyJ4nBJubBc9W0yAcwqBOa49m40e6p/mwYODKwFSsNbpHb/iJaorXPqt40INCmrbCR/Nj9H2jJmW6PBwGg+QoA2OAzFPgTX1gHUH5beuPf8n05Pocqbrv/iPRpcfrdwyA2DzjtfYCeukMj8KZl5/LH24SE2hkxi+ca1jpjEVgICCFNnj1a0EC6q7Rl+PMI5Py2h9GypOK9Bh2faq8F+M9vcWI2JxJPyw5UA/ZgK3Gr47+xcIgQ4j/+GRNWGXPEmdKCJdVibGBZTpXTGPd2XJ+757f7PFDu4h6ALdtAxxZuBs938hTfEPmJ2o7hmAB/3rSFA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector5401; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=kIOFJG1F25FGJGa4jAlyvgupin88vrjNKd8wOe/LNPc=; b=i/jn+JwGdkcom8jbXU8w6PszojEuT63j+HLwMFnGlyRoQCx2/lk4KILhOekv4dmxiQqh9HREwTjGn6kv/IbeuIiuQH8vMF7zQtvQpmZGq1BTErkeYZNSVOntBTfplYX9Wmm1YXQPaJKE3k8yJUHOL96ta0Yh52Fzzzqrky5s9lvCuUuu0ICdStRlPiwW6PvKY5vkofFPopSqMs5n/w4tmcHcnam9JDlAfd4+uhvGdoD71ilc5hK9qyo+FaAmhpdxlx6lRQz/kyX2AcTt6vhvGm4VvYICwSqiCqll3LmDXCu6FEc636M/dYWQZz0TbDa/pLnajFye1y9GmHHLozlH+Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cert.org; dmarc=pass action=none header.from=cert.org; dkim=pass header.d=cert.org; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cert.org; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kIOFJG1F25FGJGa4jAlyvgupin88vrjNKd8wOe/LNPc=; b=DKe6ilEEwKrEiwD49lN/UiPGteLBqModfTCLpJAF3wJUo/vPgPlSVkNYl52ipZyccCC/QeJJBrp42M/eUtupBIlbTPqdgOXMBsJ9jm6riHiJpBFRnjTOnox1CX0LR96A2HKcIYMNyRexqRdrNEss8y/7DYQRPqTyJorJewkOdHs=
Received: from BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM (2001:489a:200:168::11) by BN2P110MB1011.NAMP110.PROD.OUTLOOK.COM (2001:489a:200:168::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.21; Mon, 17 Oct 2022 20:50:23 +0000
Received: from BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM ([fe80::dbc:d573:57cb:e0e1]) by BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM ([fe80::dbc:d573:57cb:e0e1%7]) with mapi id 15.20.5709.026; Mon, 17 Oct 2022 20:50:23 +0000
From: Roman Danyliw <rdd@cert.org>
To: Justin Richer <jricher@mit.edu>
CC: "oauth@ietf.org" <oauth@ietf.org>
Thread-Topic: [OAUTH-WG] AD review of draft-ietf-oauth-rar-12
Thread-Index: AdjIiWV70TiGp2n1QyK+vwbKisrOXgAjS6wABa9LvKAApQsFgAAAg5PA
Date: Mon, 17 Oct 2022 20:50:23 +0000
Message-ID: <BN2P110MB11073A7E09D9743995101B75DC299@BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM>
References: <BN2P110MB110748BA202E467849E8A973DC469@BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM> <3496F95F-14DE-4A66-90BD-4246ABB1AC20@mit.edu> <BN2P110MB1107B46FA1B5A4F8852807D2DC249@BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM> <E5F8EB6B-C863-49DA-8195-BC954F7E519C@mit.edu>
In-Reply-To: <E5F8EB6B-C863-49DA-8195-BC954F7E519C@mit.edu>
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=cert.org;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BN2P110MB1107:EE_|BN2P110MB1011:EE_
x-ms-office365-filtering-correlation-id: 59fba0d3-9719-4abe-6a33-08dab0813679
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: mTB2V0HJ2Ztk3pgD8C0sKXDZzl1Gan2Y5k8cAJFQummMHy7CCRwJie4Z8rfQELBPOyuaxREnIec3pcqG6AhD4ZYz0MYIqEE7XvXZ16KHIzgjsOGlhgc2iA2ZDsEbbu20t1Qs8hE1f+ESVZmkN2iQfG2uMKsqcMd1DS3MU27nB4GANUFkX8qhy7Ouqy3OzTx/YvPH3Ez/gwWOR3d2vS4y+JF0tn3TLi+UE+ESIIKK6FhJNLPBhyx3Rac2+9e+aoajmAeVaX+jPpamIhZPAoSTHNz46bOqZy9MxB7WD8pig97OT8cWhbx+EHUKBgs3Os34IT+LAHoECTVRlHGii1phGnGaB5SiTEnalaArqOORTfV03ukKqBxFshrZKwHeXp9eemKaVYMX53P4FMo/viy1NMZ3riqGk3vorh8/ehz/nEGZ5LeJWKtnQ0VBuiu1tUqZ94TQMDRUgwjugthsyOUDZPZwablBt9PcHImFETHBTeKmBWmMzBqb+GL7UdYcIla2+BMNIDStVe4+7oL4KQ8RRpIEaIt1oB9snJ4DPlL9NPMxd3Q7bDI1Xg4UyvGYzXDn7NFWkSwla9iOV8RBfaSI+z425z+HUPZOme3nRdK25AGlfpnC+MMW3sPOy/5gT8N+emC1UkTRz4F8iLwxh4iRi1Q7tRcjlkuAgnLAaFyUXtLFKU5j93zrWy3G0tEzvfUFdT1KpQCB9c9KSIk6G2kFmw==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230022)(366004)(451199015)(26005)(53546011)(9686003)(7696005)(33656002)(186003)(66946007)(6506007)(66556008)(76116006)(64756008)(66476007)(66446008)(498600001)(966005)(71200400001)(6916009)(83380400001)(55016003)(38070700005)(166002)(86362001)(2906002)(8676002)(38100700002)(122000001)(82960400001)(8936002)(5660300002)(52536014)(4326008); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: i8EH0zbM9oN5Zdoze/wSqUNM3Xwm7bScQj1x+6XhyBiC/Y+empl41aaRgbnpbnJHtX9FBzBbfgxBENyEozs7OpMgdFsM7e5QxNNRc6EU8Y/4FO+NuGl494G9+jz9YXYVcR11AuE1WyebgKw7mV9TtmZHUQi2vz5iKRfB3M5o6nWUGUG3QH3QNxfeQmiYi2RiMCDXX8DmhpGbtsU9i8G0GTQ5BigiqesTgEla/AUnSUjjqdiOsfAoblmzvcN5Gr7qqU0Plpf1RjfnFEOfPPdaS07RmBux4f29qmc0vbyPP8TcdzpM1onjAelEa/yE7CqbI4X/NO2/CKYmwayQMJxOfi1IAXBDk+AFbQyOboKG6IRwqfyq/GfBPBLzyBkAtK7R18X1hQDeQ//eAXVQQo/x/lyDanAUUf4NgzUIMj4D/Nc=
Content-Type: multipart/alternative; boundary="_000_BN2P110MB11073A7E09D9743995101B75DC299BN2P110MB1107NAMP_"
MIME-Version: 1.0
X-OriginatorOrg: cert.org
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-Network-Message-Id: 59fba0d3-9719-4abe-6a33-08dab0813679
X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Oct 2022 20:50:23.7386 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 95a9dce2-04f2-4043-995d-1ec3861911c6
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN2P110MB1011
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/J9SbDaFlbfB-M9-x_2ExdaBH3mQ>
Subject: Re: [OAUTH-WG] AD review of draft-ietf-oauth-rar-12
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>, <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth/>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 17 Oct 2022 20:50:30 -0000

Hi Justin!

https://github.com/oauthstuff/draft-oauth-rar/pull/88 looks good to me.  Thanks.
Roman

From: Justin Richer <jricher@mit.edu>
Sent: Monday, October 17, 2022 4:35 PM
To: Roman Danyliw <rdd@cert.org>
Cc: oauth@ietf.org
Subject: Re: [OAUTH-WG] AD review of draft-ietf-oauth-rar-12

Thank you, that’s a much better way to say that. I think more of that paragraph can actually be pulled back, so I’m proposing this as the opening paragraph to that section:

This specification defines a set of common data fields that are designed to be usable across different types of APIs. This specification does not require the use of any of these common fields by an API definition, but instead provides them as reusable generic components for API designers to make use of. The allowable values of all fields are determined by the API being protected, as defined by a particular "type" value.

This removes the problematic normative language but, I believe, still gets the intent across. I’ve put in a PR that makes this change here:

https://github.com/oauthstuff/draft-oauth-rar/pull/88
Please let us know if this works for you. Thanks for your helpful input!

 — Justin


On Oct 14, 2022, at 12:50 PM, Roman Danyliw <rdd@cert.org<mailto:rdd@cert.org>> wrote:

Hi Justin!


-----Original Message-----
From: Justin Richer <jricher@mit.edu<mailto:jricher@mit.edu>>
Sent: Thursday, September 15, 2022 11:20 AM
To: Roman Danyliw <rdd@cert.org<mailto:rdd@cert.org>>
Cc: oauth@ietf.org<mailto:oauth@ietf.org>
Subject: Re: [OAUTH-WG] AD review of draft-ietf-oauth-rar-12

Hi Roman, some responses inline.


On Sep 14, 2022, at 6:30 PM, Roman Danyliw <rdd@cert.org<mailto:rdd@cert.org>> wrote:


[snip]


** Section 2.2.

All data fields are OPTIONAL for use by a given API
 definition.

I don't follow how this is true in the general case.  I was under the impression
that this section defined what is expected to be common fields.  Couldn't some
AS with a particular type require their presence?

Yes — a particular “type” value can require any of these fields, but a type is
itself not *required* to use any of these fields. That’s what we were trying to
convey with the OPTIONAL here. Is there a better way to communicate this?
Maybe we should just leave off the “OPTIONAL” flag here, but we wanted
people to realize that the common elements don’t have to be used by each
“type”, while every request needs to have a “type”.

We're on the same page.  It's up to the API/particular type field to decide which fields to use and this specification doesn't require any of them.  They are presented here for the possibility of reuse in common use cases.  I would recommend:

OLD
   All data fields are OPTIONAL for use by a given API
  definition.  The allowable values of all fields are determined by the
  API being protected.

NEW
The allowable values of all fields are determined by the API (as defined by a particular "type" value) being protected.  This specification does not require the use of any of these common fields.


[snip]


** Section 6.1

However, when comparing a new request to an existing request,
 authorization servers can use the same processing techniques as used
 in granting the request in the first place to determine if a resource
 owner needs to authorize the request.

Why is it possible to assess two arbitrary requests in this case to determine "if
a resource owner needs to authorize the request", but the prior paragraph
explicitly calls out that comparing two arbitrary requests is not feasible?  To me
is seems like comparing two requests to understand if more or less permissions
are being requested is equivalent to determining if a new request exceed the
current request to determine if going back to the resource owner is needed.



It might be possible to do such a comparison in a specific case, but we can’t add
logic in the general case. In OAuth, scopes are supposed to be purely additive,
so if you have another scope it’s for “more” things. We know in practice that
that’s not always how it works. Things get much more complex with RAR
because you could have an object with :more: fields in it that makes things
more :strict: by the presence of those fields. That’s all going to be up to the
“type” definition though, so if you understand the “type” definition you could
do a comparison based on that. To me the text is clear, can you suggest how
we could clarify this?

OLD 1
Since the nature of an authorization details request
  is based solely on the API or APIs that it is describing, there is
  not a simple means of comparing any two arbitrary authorization
  details requests.

NEW 1
Since the semantics of the fields in the authorization details result will be implementation specific to a given API or set of APIs, there is a no standardized mechanism to compare two arbitrary authorization detail requests.

OLD 2
  However, when comparing a new request to an existing request,

NEW 2

When comparing a new request to an existing request, ...

[snip]


** Section 7.

 If the client does not specify
 the authorization_details token request parameters, the AS determines
 the resulting authorization details at its discretion.  The
 authorization server MAY consider the values of other parameters such
 as resource and scope if they are present during this processing, and
 the details of such considerations are outside the scope of this
 specification.

This guidance seems to indicate the use of the scope parameter is optional in
determining the authorization details.  Section 3.1 says "The AS MUST consider
both sets of requirements in combination with each other for the given
authorization request."  My read is that this is conflicting guidance and Section
3.1 is correct.

You aren’t required to use “scope” in order to use “authorization_details”, but
we do want to say that the AS is allowed to (or even is supposed to) consider
both “scope” and “authorization_details” when determining the resulting
access for any given request that might have both. The guidance in 3.1 should
probably say “the AS MUST consider all requirements present on a request” or
something like that?

That softer language of "use what is presented" makes sense to me.

[snip]


** Section 11.2.

Accept authorization_details parameter in authorization requests
    including basic syntax check  for compliance with this
    specification

Why only "basic syntax checking"?  Perhaps "syntax checking"?

I’m not positive, but I think the guidance here is meant for “basic” to mean
more like “make sure it’s a JSON object and that it has a type field” as opposed
to “check the type field’s value and run it against a JSON Schema definition”.

I don't think this is worth unpacking and would just recommend:

OLD
*  Accept authorization_details parameter in authorization requests
     including basic syntax check for compliance with this
     specification

NEW
*  Accept authorization_details parameter in authorization requests
     Conformant with this this specification



** Section 11.2

 One option would be to have a mechanism allowing the registration of
 extension modules, each of them responsible for rendering the
 respective user consent and any transformation needed to provide the
 data needed to the resource server by way of structured access tokens
 or token introspection responses.

I don't follow the flexibility being described here.  "One option ..." with
respect to what?

With respect to having certain types hard-coded (like someone like Facebook or
GitHub might do because their API is specific) or having some kind of
mechanism that just prints out the RAR objects verbatim.

Ah, you mean relative to customization.  Maybe s/One option would be/One option to support customization/

Regards,
Roman