Re: [sipcore] I-D Action: draft-ietf-sipcore-sip-token-authnz-02.txt

"Olle E. Johansson" <oej@edvina.net> Thu, 11 July 2019 15:26 UTC

Return-Path: <oej@edvina.net>
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 F0752120157 for <sipcore@ietfa.amsl.com>; Thu, 11 Jul 2019 08:26:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 kzDpbM5ssIRr for <sipcore@ietfa.amsl.com>; Thu, 11 Jul 2019 08:26:35 -0700 (PDT)
Received: from smtp7.webway.se (smtp7.webway.se [212.3.14.205]) (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 B398B1200F9 for <sipcore@ietf.org>; Thu, 11 Jul 2019 08:26:34 -0700 (PDT)
Received: from haworthia-20.webway.org (h-205-16.A165.corp.bahnhof.se [176.10.205.16]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp7.webway.se (Postfix) with ESMTPSA id 64A36A40; Thu, 11 Jul 2019 17:26:31 +0200 (CEST)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
From: "Olle E. Johansson" <oej@edvina.net>
In-Reply-To: <8A712633-C587-40B7-9D8A-63AA9B636580@ericsson.com>
Date: Thu, 11 Jul 2019 17:26:30 +0200
Cc: "sipcore@ietf.org" <sipcore@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <E06514D2-1ADF-4A8D-A3F4-005E53BFF7E7@edvina.net>
References: <156249821133.14592.1211919336596009446@ietfa.amsl.com> <CAGL6epLsP_UfZMAcFLsORrR05Enu-vp=jnkgUFuKSttQm8swAw@mail.gmail.com> <c8d5c42e-ab21-80e8-3189-c8592dd02d3a@alum.mit.edu> <HE1PR07MB3161C55955B2FCED2C0F6A9993F60@HE1PR07MB3161.eurprd07.prod.outlook.com> <68ed93ae-57df-6bc7-774b-47959417abda@alum.mit.edu> <HE1PR07MB3161D46B4A44FC7E789ADDB893F10@HE1PR07MB3161.eurprd07.prod.outlook.com> <4a9787e5-b5e2-bc08-0fa0-fae6bd44148d@alum.mit.edu> <527F4C39-F065-4335-A939-6D443F1801E7@ericsson.com> <5bb63c0c-130d-7f69-10b0-1ed1b274cc58@alum.mit.edu> <87AD4BB8-CE77-4FD7-BB72-6643DF513058@ericsson.com> <168b1354-b35b-edee-e5f9-d4ddbecfae40@alum.mit.edu> <607A513F-8616-4777-8B5E-59390E845709@ericsson.com> <b6ca4c79-5a17-10da-3882-20bc8b0e9b98@alum.mit.edu> <5ABB2F7B-8928-4581-8AAD-C8EFDBE95F7E@edvina.net> <99649808-9894-42B4-ADD1-52D0F70A3FB3@ericsson.com> <BCFE43BD-86FF-457E-9006-1DA7C8F3F6BE@edvina.net> <C3BFE2FE-0797-4E54-BAD4-B24E32CB183F@ericsson.com> <BD0B9B14-1E35-42C4-BF51-430C7E052145@edvina.net> <C5597D63-1B58-44D0-A2CE-4170CC1BE23E@ericsson.com> <7CE54346-6558-4605-A5DB-84C539400A19@edvina.net> <1C6CBDE3-EAD4-4470-A528-8EDA7F2487D2@ericsson.com> <D07B6838-8697-40B2-B191-1B8C411D8838@edvina.net> <8A712633-C587-40B7-9D8A-63AA9B636580@ericsson.com>
To: Christer Holmberg <christer.holmberg@ericsson.com>
X-Mailer: Apple Mail (2.3445.104.11)
Archived-At: <https://mailarchive.ietf.org/arch/msg/sipcore/Yc64dxjOcREVzfhndNbwU8DOd2Q>
Subject: Re: [sipcore] I-D Action: draft-ietf-sipcore-sip-token-authnz-02.txt
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: Thu, 11 Jul 2019 15:26:37 -0000


> On 11 Jul 2019, at 17:13, Christer Holmberg <christer.holmberg@ericsson.com> wrote:
> 
> Hi,
> 
>>>>>>>>>> The tokens generally, but if I understand it right not always, are JWT structures that contain various data. In 
>>>>>>>>>> OpenID connect both the access and identity token are JWTs.
>>>>>>>>>> We can either specify specific claims that  are standardised for various SIP functions or let that be open for 
>>>>>>>>>> the SIP implementors to specify or a combination. 
>>>>>>>>> 
>>>>>>>>> For backward compatibility, we should at least let SIP implementors specify
>>>>>>>> Maybe, but at least we should write something about the usage of claims and scopes.
>>>>>>>> I think a base level for this draft is specifying a way to say “this access token is valid for SIP usage” or
>>>>>>>> “this is also a SIP identity"
>>>>>>> 
>>>>>>> Perhaps we can add some text about scope and claims, but I don't want to mandate usage of specific values, because that 
>>>>>>> may not be backward compatible with existing implementations using JWT. 
>>>>>> 
>>>>>> We can mandate *if* the access token is a jwt (and there’s an identity token like OpenID Connect). 
>>>>> 
>>>>>  It may not work with existing implementations that DO use JWT access tokens (not sure whether they use OpenID Connect, though).
>>>> 
>>>> Ok, you are making me interested - what are these implementations?
>>> 
>>>  Unfortunately I am not able to give information regarding that.
>>> 
>>>> When writing a new standard document, should we really be blocked by pre-standard implementations? I would assume that we
>>>> should be inspired by them, learn by their experiences, but not be hindered by them. 
>>> 
>>>   The implementations are based on earlier versions of the draft.
>>> 
>>>   And, yes, there is the old saying that one should not deploy a draft before the draft becomes RFC. 
>>> 
>>>   But, in this case, the first version of Rifaat's individual draft was submitted in 2014. Then, for whatever reason, it took 3(!) years before it 
>>>  got adopted, and after that we have so far worked on it for two years. How long is one expected to wait for an RFC before deploying???
>>> 
>>>    Of course, if something is broken we need to fix it. But, I don't think what you suggest is fixing something that is broken, it is adding new 
>>>    functionality. And, I have no problem with that, as long as it is backward compatible.
>> 
>> 
>> Christer, 
>> I’ve been thinking about this. We are almost in the same situation as the old discussion about the DIversion: header. While waiting
>> for another better solution, that’s what all of us implemented. Then came SIP HIstory and we had no docs to refer to for interoperability…
>> The old draft was later published as an informational RFC.
>> 
>> Can we look into the same solution? Publishing the current draft wiith minor nits as an informational RFC that your implementation is compliant with
>> and then work on something more up-to-par with current OAuth2/OpenID connect BCPs and thinking?
> 
>    I really think that is an unfair request, considering how many years some of us have been working on this, especially since I don't think the current solution is broken.
> 
>    Yes, there are lots of things that need to be clarified, and some things may be added, so let's first try to do that and see where it takes us.
Let’s do that. My apologies for stepping in late, but I haven’t felt blocked by an early implementation of a draft before. I do understand it’s been
some time.
> 
>> As an example: When reading the docs I see ways of protecting the access token so that only a specific service (read SIP domain)  may decrypt and
>> use it. That way we don’t need to disallow forwarding of SIP messages with a bearer token, as the token will be useless beyond that point.
> 
>    JWT gives you that property, doesn't it? There is nothing in the current draft that forbids or prevents you from using JWT. As we noted earlier, it's probably 
>    what most (all?) people are using anyway.
The implementations I’ve seen is mostly signed JWTs, but you are right, JWTs can be encrypted.
> 
>> Starting to go down that road, wlil definitely mean that we leave the implementation you currently have behind. And that is just
>> one issue. The other is having a parsable access token, which I think would be a requirement to follow the BCP and propably to get through
>> the hole security audit for any standard-track RFC publication.
> 
>    JWT is parsable :)
> 
>    Is your issue that we don't mandate JWT? If so, why don't we liaise (as you suggested earlier) with the oauth wg to see whether it would be safe to assume that everyone uses JWT.
I don’t think we can reach any level of acceptable security in this without parseable access (and identity) tokens. All new Oauth documents from the WG seems to 
assume you can transport metadata from the authorization server to the resource server in tokens in order to limit access token usage. 

In addition I think putting the bearer token in a SIP header is dangerous - it will require a lot for existing non-compliant browsers not to leak this header out in the wild.
Protecting it in a way that only the targeted audience can decode it and validate it would make the situation better.

/O