Re: [OAUTH-WG] Native clients & 'confidentiality'

Michael Thomas <> Mon, 19 December 2011 18:38 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id D6F721F0C51 for <>; Mon, 19 Dec 2011 10:38:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[AWL=0.000, BAYES_00=-2.599]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id yPGXPEHxI585 for <>; Mon, 19 Dec 2011 10:38:46 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id 85B161F0C40 for <>; Mon, 19 Dec 2011 10:38:46 -0800 (PST)
Received: from ( []) (authenticated bits=0) by (8.14.3/8.14.3) with ESMTP id pBJIch74020483 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Mon, 19 Dec 2011 10:38:44 -0800
Message-ID: <>
Date: Mon, 19 Dec 2011 10:38:43 -0800
From: Michael Thomas <>
User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv: Gecko/20090605 Thunderbird/ Mnenhy/
MIME-Version: 1.0
To: Paul Madsen <>
References: <> <> <> <> <>
In-Reply-To: <>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; l=4243; t=1324319924; x=1325183924; c=relaxed/simple; s=thundersaddle.kirkwood; h=Content-Type:From:Subject:Content-Transfer-Encoding:MIME-Version;;; z=From:=20Michael=20Thomas=20<> |Subject:=20Re=3A=20[OAUTH-WG]=20Native=20clients=20&=20'co nfidentiality' |Sender:=20 |To:=20Paul=20Madsen=20<> |Content-Type:=20text/plain=3B=20charset=3DISO-8859-1=3B=20 format=3Dflowed |Content-Transfer-Encoding:=207bit |MIME-Version:=201.0; bh=6UiivQF0MO9m6e4Ygs1VFMt4B5nO10+3H54XLRS7204=; b=LkuK2mCEFhY79ryl14pWZnNmtmV4vQGcnloaPSZ4fPzdAqM9ApRUUt/E6f E10QJ6/SqfA2G2S69fACE0EPnCsfS7VaFrovD5CORsWQXM2faID5NxsWNHDx kx4P6Sm4OpqX4s9MYxdlXtwmFhIsJL03o/Lq+tdKniaENVA2QKf7Q=;
Authentication-Results: ; v=0.1; dkim=pass ( sig from verified; ); dkim-asp=pass
Subject: Re: [OAUTH-WG] Native clients & 'confidentiality'
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: OAUTH WG <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Mon, 19 Dec 2011 18:38:48 -0000

On 12/19/2011 10:20 AM, Paul Madsen wrote:
> our bearer access tokens (JWT formatted) encapsulate a set of content 
> permissions, and serve to authorize the entity presenting them to the 
> corresponding video content.
> We dont want those tokens falling into the wrong hands, and so want to 
> prevent an attacker being able to impersonate a valid client and trade 
> an authz code for the token.
> *Ideally*, all our clients would be confidential, and so capable of 
> authenticating to the AS to prevent/mitigate the above risk

If there's any incentive at all to decompile an .apk (for example) and steal
the client secret, you can be guaranteed that somebody will do that.
Consider also that most developers area going to use whatever sample
code there is and do just about nothing to hide the key as best they
can regardless of how many warnings you put in your sample code.
So the attack is not likely to even be particularly difficult. Is it really
too much to ask app developers to spend $7/month for a shared hosting
service to keep their client secret a lot more secure?

Another thing to consider: in your client enrollment process how would
you insure/police that they are actually in compliance that it actually is
actually coming from confidential client?


> thanks
> paul
> On 12/19/11 1:00 PM, Michael Thomas wrote:
>> On 12/19/2011 09:50 AM, Paul Madsen wrote:
>>> Hi Mike, to some extent I think my question is not about specific 
>>> security characteristics, but rather whether its realistic for our 
>>> group to mandate that both server & native clients have the *same* 
>>> security characteristics - particularly the ability to 'securely' 
>>> authenticate to the AS on the token endpoint.
>> Well given the explanation Justin just gave, they do not. As I 
>> understand
>> your initial query, redefining a native/embedded app as 
>> "confidential" doesn't
>> alter that reality. But my first question about requirements still is 
>> relevant:
>> what are you trying to protect from whom, and what is the level of 
>> risk that
>> your profile of oauth is willing to tolerate?
>> Mike
>>> thanks
>>> paul
>>> On 12/19/11 12:18 PM, Michael Thomas wrote:
>>>> On 12/19/2011 04:19 AM, Paul Madsen wrote:
>>>>> Hi, the Online Media Authorization Protocol (OMAP) is a (as yet 
>>>>> unreleased) profile of OAuth 2.0 for online delivery of video 
>>>>> content based on a user's subscriptions (the TV Everywhere use case)
>>>>> We want to support both server & native mobile clients. It is for 
>>>>> the second class of clients that I'd appreciate some clarification 
>>>>> of 'confidentiality' as defined in OAuth 2.
>>>>> OAuth 2 distinguishes confidential & public clients based on their 
>>>>> ability to secure the credentials they'd use to authenticate to an 
>>>>> AS - confidential clients can protect those credentials, public 
>>>>> clients can't.
>>>>> Notwithstanding the above definition, the spec gives a degree of 
>>>>> discretion to the AS
>>>>>     The client type designation is based on the authorization 
>>>>> server's
>>>>>     definition of secure authentication and its acceptable exposure
>>>>>     levels of client credentials.
>>>>> Give this discretion, is it practical for the OMAP spec to 
>>>>> stipulate that 'All Clients (both server & native mobile), MUST be 
>>>>> confidential', ie let each individual OMAP AS specify its own 
>>>>> requirements of clients and their ability to securely authenticate?
>>>> Hi,
>>>> Can you say exactly what your security requirements are before 
>>>> trying to determine which
>>>> (if either) is the right answer? I've got some concerns in this 
>>>> area that I'm trying to understand
>>>> and am not sure if they're related to your concern or not. Part of 
>>>> this is that I really don't
>>>> understand what the difference is between a "public" client and a 
>>>> "confidential client" and
>>>> rereading the draft isn't helping me. In particular, can a iPhone 
>>>> app with a UIWebView *ever*
>>>> be a "confidential" client, and if so how?
>>>> Mike