Re: [sipcore] WGLC draft-ietf-sipcore-sip-token-authnz

Christer Holmberg <christer.holmberg@ericsson.com> Wed, 04 December 2019 08:00 UTC

Return-Path: <christer.holmberg@ericsson.com>
X-Original-To: sipcore@ietfa.amsl.com
Delivered-To: sipcore@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 757DA120106 for <sipcore@ietfa.amsl.com>; Wed, 4 Dec 2019 00:00:16 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.002
X-Spam-Level:
X-Spam-Status: No, score=-2.002 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=ericsson.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 swzCmXKooQNd for <sipcore@ietfa.amsl.com>; Wed, 4 Dec 2019 00:00:14 -0800 (PST)
Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-eopbgr150081.outbound.protection.outlook.com [40.107.15.81]) (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 2C32D120100 for <sipcore@ietf.org>; Wed, 4 Dec 2019 00:00:14 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E/4bqmDdy364EuPofB/TU0CZ5vDdPOvvkC+iiqYsd6yB2XxZ2ujjmsbdxTFBltaYCvg67r+4JwsQ/pRPlhpatXq5+B15oFeuEzf+CZ2M4lU4WinU3BGThDUjYns2aIKtEpRkAl0yVR+rPfqLwOLiKLOH4L1PwiJjQgqLrjaNQMkEXOFDe4LSwU3XZaS+3d0F38Jdc0xCNCNvBhn5byvOnY+YhAudK9u5/fpZXtj7MEgFZrFnTOsQLvcJm6wqoFrOhTZx5CN5D+Pornk38Xm6CnER/j3+lAKQM9YHjKvllXJSfpV4eQe0XTRBpYZwEFfut4VfDT+u7qwZMuWYtO9Ewg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hXF7mHw+4wyLpQ8t+ptSiNLEQiMhUZtsj1T9NTQL0x4=; b=N9rIk9xOp/us2pNf9JYr0y4XQ9ejxQvgJKCpNXthT0+8TPuoexKRTxr8JUxKA5WiJb4A+XJGyQNydUNrOpmGDWCZKTP/dY15AJZPVu13BTXtifmRGal0EGhN+RgehHbeYlNrbC8UVZo7k5rzhKRsbGcAH/l81Atev8y612EnuzUbCtGXlExnA/49e+CkZ69ZEpn89bPR7ZVITCvCFFlnme4XeaifCrdX8DuFX8Piq9L7iDEplImSA8JHqQ4PzS14hySTDzIwfZu0P+kSSEO/iRj4pILj3T6aO01VHJCkuP/ueb8yBXCBB8/x/tDhMZ1xrG7tnV8xtSMJxjM2tGNkKA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ericsson.com; dmarc=pass action=none header.from=ericsson.com; dkim=pass header.d=ericsson.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ericsson.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hXF7mHw+4wyLpQ8t+ptSiNLEQiMhUZtsj1T9NTQL0x4=; b=U0ybi5P26AU8IOoFl38yacKTYhx2xwjiB8mHUeRNb1Rfi2dewILkoSM5ouzzucsnO2Gqs8Ei4odEdfMfYxYYocu/BZQ7okgUBVG3JTxKq951l+gUYCoKiBRou4U/c0ZGZrVbFJvMlzzgLnbBtyQ37dQexSanvg1RFCFjzzLRsNE=
Received: from HE1PR07MB3161.eurprd07.prod.outlook.com (10.170.245.23) by HE1PR07MB3308.eurprd07.prod.outlook.com (10.170.246.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2516.6; Wed, 4 Dec 2019 08:00:09 +0000
Received: from HE1PR07MB3161.eurprd07.prod.outlook.com ([fe80::2ca9:414:cc01:9706]) by HE1PR07MB3161.eurprd07.prod.outlook.com ([fe80::2ca9:414:cc01:9706%4]) with mapi id 15.20.2516.003; Wed, 4 Dec 2019 08:00:09 +0000
From: Christer Holmberg <christer.holmberg@ericsson.com>
To: Paul Kyzivat <pkyzivat@alum.mit.edu>, "sipcore@ietf.org" <sipcore@ietf.org>
Thread-Topic: [sipcore] WGLC draft-ietf-sipcore-sip-token-authnz
Thread-Index: AQHVqRaq+n57bvgHbkmAxusa4398hqeoufCAgAEHG4A=
Date: Wed, 04 Dec 2019 08:00:09 +0000
Message-ID: <76BD0473-8921-4931-9AEE-1880C3AA6A57@ericsson.com>
References: <9b7ddc2f-d54a-bbaa-8e56-276c8bed725f@nostrum.com> <d7efa4c6-ac85-58ac-1c6c-5b09d955ab00@alum.mit.edu>
In-Reply-To: <d7efa4c6-ac85-58ac-1c6c-5b09d955ab00@alum.mit.edu>
Accept-Language: en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/10.1e.0.191013
authentication-results: spf=none (sender IP is ) smtp.mailfrom=christer.holmberg@ericsson.com;
x-originating-ip: [89.166.49.243]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 1eaadd6b-9757-4cb6-367f-08d7788ffbe7
x-ms-traffictypediagnostic: HE1PR07MB3308:
x-microsoft-antispam-prvs: <HE1PR07MB3308905FE69761B45893117B935D0@HE1PR07MB3308.eurprd07.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 0241D5F98C
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(376002)(396003)(39860400002)(346002)(136003)(366004)(189003)(199004)(2501003)(5660300002)(33656002)(6486002)(478600001)(66946007)(66476007)(66556008)(58126008)(76116006)(64756008)(66446008)(7736002)(99286004)(316002)(91956017)(6116002)(110136005)(3846002)(2616005)(36756003)(446003)(11346002)(26005)(256004)(71200400001)(305945005)(81156014)(2171002)(81166006)(44832011)(6246003)(102836004)(14444005)(2906002)(8676002)(86362001)(71190400001)(6512007)(229853002)(8936002)(25786009)(76176011)(186003)(6506007)(14454004)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR07MB3308; H:HE1PR07MB3161.eurprd07.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1;
received-spf: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: v4TgdtXSTLvTrEFZt3ucJvqRmNHnHkHmyJ/iBhjrbEJcoQIHW3nzXrme7adLH5Q91uusgyEKnjF49TnTN5h4Bf7Y+yOINx9FF2qO1vedKho5vDUgZls75L/KlTwoEhKEN0/AujtAx6z/HUwcRB1IEem87NXpb5hI4eXoLSbLTU00zfpIovkHTJHIA+q9OFimKqx2+JnIOTTwMEDWajWNKoc0e+JudtwCzyFgDYEBZoznG0wU7xXxhLDEbqo49SPLf1ZgORCB4IMljPC38uVaxDtvpZ0NvvfD3WrHrQcOAKcWuizyQjVi+WbNMbfALBVEVc2GKtQCP37W6mlaz1E1oO7bpBc6LY9CkKtBL9UtHbLAIr3NJBlwjakmWdYrhbzNQ8BJZFhA0cIVhdxtcOp4w8js7yCZvxatHn8QAx3Uov6yEa5fKI/2/qHkNSiwShyy
x-ms-exchange-transport-forked: True
Content-Type: text/plain; charset="utf-8"
Content-ID: <614D0491D5C47A4FBE59D64C7D45B59B@eurprd07.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: ericsson.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1eaadd6b-9757-4cb6-367f-08d7788ffbe7
X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Dec 2019 08:00:09.6955 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 92e84ceb-fbfd-47ab-be52-080c6b87953f
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: luoUO17DamDDbhTJiEZ5JPi6zeGuVlscQlc0p6HvypqjjXMnX66DnM8UdOUfAwKY99H1gDeBkrFqJeBRaBZ6e46063eQlhgG5gmQ2yg8L4E=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR07MB3308
Archived-At: <https://mailarchive.ietf.org/arch/msg/sipcore/MEYKq_9JA91y-uVWBPv0Gm0Qlyo>
Subject: Re: [sipcore] WGLC draft-ietf-sipcore-sip-token-authnz
X-BeenThere: sipcore@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SIP Core Working Group <sipcore.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/sipcore>, <mailto:sipcore-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/sipcore/>
List-Post: <mailto:sipcore@ietf.org>
List-Help: <mailto:sipcore-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sipcore>, <mailto:sipcore-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 04 Dec 2019 08:00:16 -0000

Hi Paul,

My comments on some of your SIP-related issues (I am not addressing your issues on Sections 2.1.1 and 2.1.2 in this reply). 

>    * Section 2.1.4:
>    
>    This section says that the UAC MUST include an Authorization header 
>    field with the Bearer scheme. This is overly strong.
>    
>    This should be an explanation that *if* it has received a challenge 
>    containing the Bearer scheme then to resolve that particular challenge 
>    it needs to send a request with an Authorization header field containing 
>    the response to that challenge, including the Bearer scheme.
  
I suggest that we expand the first paragraph in the section. Something like:

"The procedures in this section apply when the UAC has received a challenge that contains a Bearer scheme, 
and the UAC has obtained a token as specified in section Section 2.1.1."
  
>    (But note that if there were multiple challenges with different schemes 
>    then it maybe able to successfully retry the request using non-Bearer 
>    credentials.)
>    
>    I don't understand what distinction you are trying to draw by 
>    distinguishing the behavior for creating a binding from that for 
>    refreshing a binding. AFAIK there should be no difference. And in fact 
>    the UAC in general cannot know whether the request being send will 
>    establish or refresh a binding.
  
It is important to point out that the same access token might not necessarily be used throughout the lifetime of the registration, if the previously included access token has expired.

---
 
>    * Section 2.1.5:
>    
>    This section has similar issues to section 2.1.4: The MUST is too 
>    strong, and the reason for distinguishing between in-dialog requests 
>    from others is unclear.
  
See my comments for 2.1.4.

---

>    * Section 2.2:
>    
>    Again is overly strong in its use of MUST. I think it is evident that 
>    the point being made is that a challenge containing Bearer scheme is the 
>    way to indicate that is with a challenge with Bearer scheme, but the 
>    text is at least awkward.
>    
>    How about:
>    
>        When a UAS or Registrar receives a request that fails to contain
>        authorization credentials acceptable to it, it SHOULD challenge the
>        request by sending a 401 (Unauthorized) response. To indicate that
>        it is willing to accept an OAuth2 token as a credential the
>        UAS/Registrar MUST include a Proxy-Authentication header field in the
>        response, indicate "Bearer" scheme and include an address of an
>        Authorization Server from which the originator can obtain an access
>        token.
  
WFM.
  
>    In the second paragraph, please provide a reference:
>    
>        ... using the procedures from [RFC???] associated with the type of
>        access token used.
  
Ok.

---
  
>    * Section 2.3:
>    
>    Similar comment to section 2.2. How about the following for the first 
>    paragraph:
>    
>        When a proxy receives a request that fails to contain
>        authorization credentials acceptable to it, it SHOULD challenge the
>        request by sending a 407 (Proxy Authentication Required) response.
>        To indicate that it is willing to accept an OAuth2 token as a
>        credential the proxy MUST include a Proxy-Authentication
>        header field in the response, indicating "Bearer" scheme and
>        including an address to an Authorization Server from which the
>        originator can obtain an access token.
  
WFM.

>    I don't think the second paragraph should condition any behavior on 
>    whether it has previously challenged. That requires that the proxy be 
>    stateful, and it isn't a necessary condition. Instead, how about:
>    
>        When a proxy wishes to authenticate a received request, it MUST
>        search the request for Proxy-Authorization header fields with 'realm'
>        parameters that match its realm. It then MUST successfully validate
>        the credentials from at least one Proxy-Authorization header field
>        for its realm. When the scheme is Bearer the proxy MUST validate the
>        access token, using the procedures from [RFC???] associated with the
>        type of access token used.
  
WFM.

---

>    * Section 3:
>    
>    The following:
>    
>        The realm and auth-param parameters are defined in [RFC3261].
>    
>    is incomplete, because it is missing 'challenge', 'realm', and 
>    'https-URI. (Where is https-URI defined?) 
>
> Another way to do this is by  adding the following to the syntax:
>    
>            challenge = <defined in RFC3261>
>            realm = <defined in RFC3261>
>            auth-param = <defined in RFC3261>
>            scope = <defined in RFC6749>
>            error = <defined in RFC6749>
>            https-URI = <where???>
>    
>    (This helps those who might try to formally validate the syntax because 
>    it removes undefined parameters.)

The section does enhance 'challenge', so I guess we can add text saying that 'challenge' is defined in RFC 3261.

Regarding the other parameters, the text already says where they are defined.

Or, are you saying that you want the references in the syntax, rather than in the normative text?

>    Also, 'scope' and 'error' are very generic rule names being used in a 
>    very restricted context. While these are not defined in RFC3261, there 
>    is the potential conflict with other extensions. I'd recommend using 
>    more specific terms. E.g.,
>    
>            challenge  =/  ("Bearer" LWS bearer-cln *(COMMA bearer-cln))
>            bearer-cln = realm / bearer-scope / authz-server / bearer-error /
>                         auth-param
>            authz-server = "authz_server" EQUAL authz-server-value
>            authz-server-value = https-URI
>
>            challenge = <defined in RFC3261>
>            realm = <defined in RFC3261>
>            auth-param = <defined in RFC3261>
>            bearer-scope = <defined as scope in RFC6749>
>            bearer-error = <defined as error in RFC6749>
>            https-URI = <where???>

The HTTP WWW-Authenticate header field uses 'error' and 'scope', and I think it would be good to be aligned.
  
>    Regarding the scope parameter:
>    
>    This parameter is conveyed from the registrar to the UAC. But what is 
>    the UAC to do with it? How does it have any control over the scope of 
>    the token it gets from the AS? Is the UAC supposed to convey this to the 
>    AS? If so, how?
  
The UAC will get the scope from the AS, and will forward it towards the UAS/registrar.
  
>    Regarding the error parameter:
>    
>    Is this just intended to be of help in debugging the UAC? Or is it 
>    expected that the UAC might take some sort of pre-programmed action in 
>    response? If the latter, how might that work? Is this information 
>    suitable for presentation to the user?
  
I see no reason why it can't be presented to the user, and I guess the UAC actions depend on what the error code is.

However, as the parameter is described in RFC 6749, I don't think we need to repeat that in this draft.

---
  
>    * Section 4:
>    
>    I agree with Dale - I don't see any value in this tag. I tried to search 
>    for all discussion on the point. The discussion attributes me with 
>    requesting it, but I don't think I did.
  
It was Olle who requested it.

However, I don't see any harm in having it. It allows the UAC to inform proxies/UAS/Registrar whether it supports the bearer scheme.

---

>    * Missing:
>    
>    I find no syntax extensions for Authorization and Proxy-Authorization. 
>    These need to be added.
  
Ok.

Regards,

Christer