Re: [OAUTH-WG] Notes from 2nd "OAuth & Authentication" Conference Call

"Richer, Justin P." <jricher@mitre.org> Mon, 20 October 2014 19:29 UTC

Return-Path: <jricher@mitre.org>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 18DCD1AC419 for <oauth@ietfa.amsl.com>; Mon, 20 Oct 2014 12:29:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.31
X-Spam-Level:
X-Spam-Status: No, score=-1.31 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_34=0.6, T_RP_MATCHES_RCVD=-0.01] autolearn=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 QD3riPLc__Tb for <oauth@ietfa.amsl.com>; Mon, 20 Oct 2014 12:29:03 -0700 (PDT)
Received: from smtpvbsrv1.mitre.org (smtpvbsrv1.mitre.org [198.49.146.234]) by ietfa.amsl.com (Postfix) with ESMTP id 3B5AC1AC412 for <oauth@ietf.org>; Mon, 20 Oct 2014 12:29:03 -0700 (PDT)
Received: from smtpvbsrv1.mitre.org (localhost.localdomain [127.0.0.1]) by localhost (Postfix) with SMTP id DE0E252E079; Mon, 20 Oct 2014 15:29:02 -0400 (EDT)
Received: from IMCCAS03.MITRE.ORG (imccas03.mitre.org [129.83.29.80]) by smtpvbsrv1.mitre.org (Postfix) with ESMTP id D13B472E047; Mon, 20 Oct 2014 15:29:02 -0400 (EDT)
Received: from IMCMBX01.MITRE.ORG ([169.254.1.78]) by IMCCAS03.MITRE.ORG ([129.83.29.80]) with mapi id 14.03.0174.001; Mon, 20 Oct 2014 15:29:02 -0400
From: "Richer, Justin P." <jricher@mitre.org>
To: Hans Zandbelt <hzandbelt@pingidentity.com>
Thread-Topic: [OAUTH-WG] Notes from 2nd "OAuth & Authentication" Conference Call
Thread-Index: AQHP6WZlO/nGGvgIwEWGX+qJtsnt/pwzfweAgAYcUYCAAAY4gIAABKaAgAACQAA=
Date: Mon, 20 Oct 2014 19:29:02 +0000
Message-ID: <5659AE3D-7BC0-407C-9A0B-9FE112348815@mitre.org>
References: <543FF850.6070409@gmx.net> <543FFB13.2060903@pingidentity.com> <FB96BBBA-2A5F-4342-99E0-D47C020E1A3B@mitre.org> <5440373F.9090601@pingidentity.com> <5445577D.4050207@pingidentity.com> <4198EC12-ED03-4ED8-AAD3-3555E34C7EA2@mitre.org> <5445609B.70607@pingidentity.com>
In-Reply-To: <5445609B.70607@pingidentity.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.146.15.56]
Content-Type: text/plain; charset="iso-8859-1"
Content-ID: <7330E3DF3994C7468FE1A8B6BE3FB230@imc.mitre.org>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Archived-At: http://mailarchive.ietf.org/arch/msg/oauth/h1u6_FLQb5s7Uk1GJBhuJ5BpRt0
Cc: "oauth@ietf.org" <oauth@ietf.org>
Subject: Re: [OAUTH-WG] Notes from 2nd "OAuth & Authentication" Conference Call
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.15
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: <http://www.ietf.org/mail-archive/web/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, 20 Oct 2014 19:29:07 -0000

Right, when you get the AT directly from the token endpoint and it's good for something, that will *probably* tell you the user is logged in. This is assuming that the authentication context can also be communicated, audience restrictions can be communicated, and all the other good stuff the document talks about. A real problem tends to stem from clients who will take access tokens from various public endpoints and use them directly (implicit clients are inherently open to this problem). Or that an access token can have a life long past the authentication event, so if a client saves the access token off someplace, does a bunch of work, then finally asks "Who's there?" and makes the user info API call, it's going to get info but not necessarily what it assumes. 

Really, all of this is why there's the ID Token and the Signed Request components in OIDC and FBC, respectively. Plus you don't always want the profile information on every request, so having something the client can read directly saves a round trip to fetch data it doesn't really want. Having the separation between the authentication context and the profile information really does make the code paths a bit simpler.

 -- Justin

On Oct 20, 2014, at 3:20 PM, Hans Zandbelt <hzandbelt@pingidentity.com> wrote:

> My point is that it *is* a guarantee if the AT just came to the client in a code flow; I don't see a problem with that although clients have to be aware of what they're doing and not allow any other flows for this.
> 
> Hans.
> 
> On 10/20/14, 9:04 PM, Richer, Justin P. wrote:
>> This is actually one of the sticky bits that I've tried to address in the document itself -- I've seen apps that assume that if they're given an access token that can be used to fetch profile information then the user is actually there. This isn't actually a guarantee, but it's commonly true enough that developers get lazy and rely on it.
>> 
>>  -- Justin
>> 
>> 
>> On Oct 20, 2014, at 2:42 PM, Hans Zandbelt <hzandbelt@pingidentity.com> wrote:
>> 
>>> or pointier: there are OAuth 2.0 deployments today that offer login semantics because they have a REST/JSON user profile API that can be accessed using the AT that was obtained in a code flow; should that be acknowledged in the doc?
>>> 
>>> Hans.
>>> 
>>> On 10/16/14, 11:23 PM, Hans Zandbelt wrote:
>>>> a deployment-related question that I have around this topic:
>>>> 
>>>> it seems that authentication using OAuth 2.0 is possible today for
>>>> confidential clients using the code flow, with a registered
>>>> redirect_uri, not consuming/storing/using refresh_tokens, and assuming
>>>> that there's an API that returns user identity info in JSON format and
>>>> the claim that uniquely identifies the user is known by the client.
>>>> 
>>>> The usage/presence of the short-lived code in this scenario/flow
>>>> guarantees that the user has just authenticated, and the audience issue
>>>> is covered by the fact that the code (thus the access_token in the token
>>>> endpoint response) are bound to the confidential client, all as per
>>>> standard OAuth 2.0 semantics.
>>>> 
>>>> 2 questions about that:
>>>> - is this right or am I overlooking some security/semantics issues here
>>>> - if right, would it make sense to acknowledge that or is that muddying
>>>> the waters even more (the current text does seem to only implicitly
>>>> acknowledge this)
>>>> 
>>>> There may be value in acknowledging this because the majority of OAuth
>>>> 2.0 OPs exposing a userinfo-like API would adhere to a REST GET+JSON
>>>> response anyhow [1] thus achieving login semantics with plain OAuth 2.0
>>>> and a bit of common practice wrt. the user info API.
>>>> 
>>>> Thanks for the excellent write-up!
>>>> 
>>>> Hans.
>>>> 
>>>> PS: I've been asked this concrete question about Spotify's OAuth 2.0
>>>> support and in fact I'm able to configure Spotify as an IDP to my OIDC
>>>> client with a minor workaround to abstain from expecting an id_token in
>>>> the token endpoint response, but calling the Spotify specific user info
>>>> endpoint like it was a standards-compliant OpenID Connect endpoint. (the
>>>> client has a per-OP configurable unique user id claim name anyhow).
>>>> 
>>>> On 10/16/14, 7:27 PM, Richer, Justin P. wrote:
>>>>> Ah yes, good catch! If only someone would put up a webpage describing
>>>>> the difference between authorization and authentication and why people
>>>>> need to stop confusing the two.
>>>>> 
>>>>> Oh wait...
>>>>> 
>>>>> 
>>>>> On Oct 16, 2014, at 1:06 PM, Hans Zandbelt
>>>>> <hzandbelt@pingidentity.com> wrote:
>>>>> 
>>>>>> About the write-up: at the end of the metaphor section it says:
>>>>>> "These recipes each add a number of items, such as a common profile
>>>>>> API, to OAuth to create an authorization protocol."
>>>>>> 
>>>>>> whereas I believe that should read "to create an authentication
>>>>>> protocol"
>>>>>> 
>>>>>> Hans.
>>>>>> 
>>>>>> On 10/16/14, 6:54 PM, Hannes Tschofenig wrote:
>>>>>>> Participants:
>>>>>>> 
>>>>>>>  * Brian Campbell
>>>>>>>  * John Bradley
>>>>>>>  * Derek Atkins
>>>>>>>  * Phil Hunt
>>>>>>>  * William Kim
>>>>>>>  * Josh Mandel
>>>>>>>  * Hannes Tschofenig
>>>>>>> 
>>>>>>> 
>>>>>>> Notes:
>>>>>>> 
>>>>>>> Justin distributed a draft writeup and explained the reasoning behind
>>>>>>> it. The intended purpose is to put the write-up (after enough
>>>>>>> review) on
>>>>>>> oauth.net. See attachments. Justin solicited feedback from the
>>>>>>> conference call participants and from the working group.
>>>>>>> 
>>>>>>> One discussion item was specifically related to the concept of audience
>>>>>>> restrictions, which comes in two flavours: (a) restriction of the
>>>>>>> access
>>>>>>> token regarding the resource server and (b) restriction of the id token
>>>>>>> regarding the client. Obviously, it is necessary to have both of these
>>>>>>> audience restrictions in place and to actually check them.
>>>>>>> 
>>>>>>> The group then went into a discussion about the use of pseudonyms in
>>>>>>> authentication and the problems deployments ran into when they used
>>>>>>> pseudonyms together with a wide range of attributes that identified
>>>>>>> users nevertheless. Phil suggested to produce a write-up about this
>>>>>>> topic.
>>>>>>> 
>>>>>>> Finally, the group started a discussion about potential actions for the
>>>>>>> OAuth working groups. Two activities were mentioned, namely to produce
>>>>>>> an IETF draft of the write-up Justin has prepared as a "formal"
>>>>>>> response
>>>>>>> to the problems with authentication using OAuth and, as a second topic,
>>>>>>> potential re-chartering of the OAuth working group to work on some
>>>>>>> solutions in this area. Hannes suggested to postpone these discussions
>>>>>>> and to first finish the write-up Justin had distributed.
>>>>>>> 
>>>>>>> Ciao
>>>>>>> Hannes & Derek
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> OAuth mailing list
>>>>>>> OAuth@ietf.org
>>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>>>> 
>>>>>> 
>>>>>> --
>>>>>> Hans Zandbelt              | Sr. Technical Architect
>>>>>> hzandbelt@pingidentity.com | Ping Identity
>>>>>> 
>>>>>> _______________________________________________
>>>>>> OAuth mailing list
>>>>>> OAuth@ietf.org
>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>> 
>>>> 
>>> 
>>> --
>>> Hans Zandbelt              | Sr. Technical Architect
>>> hzandbelt@pingidentity.com | Ping Identity
>> 
> 
> -- 
> Hans Zandbelt              | Sr. Technical Architect
> hzandbelt@pingidentity.com | Ping Identity